SETUP

libray(scLink)
Error in libray(scLink) : could not find function "libray"

Functions

plot_integrated_clusters = function (srat) { 
  ## take an integrated Seurat object, plot distributions over orig.ident

  count_table <- table(srat@meta.data$seurat_clusters, srat@meta.data$orig.ident)
  count_mtx   <- as.data.frame.matrix(count_table)
  count_mtx$cluster <- rownames(count_mtx)
  melt_mtx    <- melt(count_mtx)
  melt_mtx$cluster <- as.factor(melt_mtx$cluster)
  
  cluster_size   <- aggregate(value ~ cluster, data = melt_mtx, FUN = sum)
  
  sorted_labels <- paste(sort(as.integer(levels(cluster_size$cluster)),decreasing = T))
  cluster_size$cluster <- factor(cluster_size$cluster,levels = sorted_labels)
  melt_mtx$cluster <- factor(melt_mtx$cluster,levels = sorted_labels)
  
  colnames(melt_mtx)[2] <- "dataset"
  
  melt_mtx$dataset <- factor(melt_mtx$dataset, levels = unique(melt_mtx$dataset))

  my_colors <- createPalette(length(unique(melt_mtx$dataset)),  c("#ff0000", "#00ff00", "#0000ff"))
# Assign names to my_colors that match the levels of melt_mtx$dataset
  names(my_colors) <- levels(melt_mtx$dataset)
  
  p1 <- ggplot(cluster_size, aes(y= cluster,x = value)) + geom_bar(position="dodge", stat="identity",fill = "grey60") + 
    theme_bw() + scale_x_log10() + xlab("Cells per cluster, log10 scale") + ylab("")
  p2 <- ggplot(melt_mtx,aes(x=cluster,y=value,fill=dataset)) + 
    geom_bar(position="fill", stat="identity") + theme_bw() + coord_flip() + 
    scale_fill_manual(values = my_colors) +
    ylab("Fraction of cells in each dataset") + xlab("Cluster number") + theme(legend.position="top")
  
  p2 + p1 + plot_layout(widths = c(3,1))
}

Load data

Create Seurat object


names = c("181015_21V", "181015_22S", "181217_APn1_6V", "181217_APn1_12W",
          "181217_APn1_19S","181228_AP-rna-gradient_14V", 
          "181228_AP-rna-gradient_20W", "181228_AP-rna-gradient_27W",
          "181228_AP-rna-gradient_31S", "181228_AP-rna-gradient_36S",
          "181228_AP-rna-wash_9V", "181228_AP-rna-wash_16W", "181228_AP-rna-wash_26S",
          "190222_7W", "190222_37W", "190222_34W", "190222_39S", 
          "190222_40S", "190222_23V", "190222_25V", "SRR19661760", "SRR19661761") 

suffix = c("/outs/filtered_feature_bc_matrix")

sample <- gsub(".*_", "", names)
sample <- sort(sample)
metadata = c() 

for (i in 1:length(names)){

  data_path <- paste(paste(data_directory, sample[i], sep = ""), suffix, sep = "") 
  data_path <- normalizePath(data_path)
  data <- Read10X(data_path)
  colnames(data) <- paste(sample[i], colnames(data), sep = "_")

  metadata = c(metadata, rep(sample[i], ncol(data)))
  
  if (i == 1) {
    dvc.data = data
  } 
  else {
    dvc.data = cbind(dvc.data, data)
  }
}

metadata = data.frame(metadata)
colnames(metadata) = "sample"
rownames(metadata) = colnames(dvc.data)

dvc <- CreateSeuratObject(counts = dvc.data, meta.data = metadata)
rownames(dvc@assays$RNA@layers$counts) <- rownames(dvc@assays$RNA)

QC


mito.genes <- grep(pattern = "^mt-", x = rownames(dvc@assays$RNA), value = TRUE)
percent.mito <- Matrix::colSums(dvc@assays$RNA@layers$counts[mito.genes,])/Matrix::colSums(dvc@assays$RNA@layers$counts)

ribo.genes <- grep(pattern = "^Rp", x = rownames(dvc@assays$RNA), value = TRUE)
percent.ribo <- Matrix::colSums(dvc@assays$RNA@layers$counts[ribo.genes,])/Matrix::colSums(dvc@assays$RNA@layers$counts)

# Save data to the Seurat object
mito.ribo = as.data.frame(cbind(percent.mito, percent.ribo))
colnames(mito.ribo) = c("percent.mito", "percent.ribo")

dvc <- AddMetaData(object = dvc, metadata = mito.ribo)

# Create the violin plot and adjust margins
vln <- VlnPlot(dvc, features = c("nFeature_RNA", "nCount_RNA"), ncol = 2) 

print(vln)


vln2 <- VlnPlot(dvc, features = c("percent.mito", "percent.ribo"), ncol = 2)
print(vln2)


dvc <- subset(dvc, subset = percent.mito < .05)

dvc.list <- SplitObject(object = dvc, split.by = "sample")

Data normalization per sample

cluster_assignments_list <- list()
for(i in 1:length(dvc.list)) {
  dvc.list[[i]] <- NormalizeData(object = dvc.list[[i]], verbose = FALSE)
  dvc.list[[i]] <- FindVariableFeatures(object = dvc.list[[i]], 
                                       selection.method = "vst", nfeatures = 2000, 
                                       verbose = FALSE)
  dvc.list[[i]] <- ScaleData(dvc.list[[i]], vars.to.regress = "nCount_RNA", verbose = FALSE)
  dvc.list[[i]] <- RunPCA(dvc.list[[i]], npcs = 30, verbose = FALSE)
  dvc.list[[i]] <- RunUMAP(dvc.list[[i]], reduction = "pca", dims = 1:30, verbose = FALSE)

  dvc.list[[i]] <- FindNeighbors(object = dvc.list[[i]], dims = 1:30, verbose = FALSE)
  dvc.list[[i]] <- FindClusters(object = dvc.list[[i]], resolution = 0.4, verbose = FALSE)  # Adjust resolution as needed

  # Store cluster assignments
  cluster_assignments_list[[sample_names[i]]] <- dvc.list[[i]]@meta.data$seurat_clusters
  names(cluster_assignments_list[[sample_names[i]]]) <- colnames(dvc.list[[i]])
}  

saveRDS(dvc.list, file = "~/Git/P24-203/data/dvc_list.rds")

Ambient RNA removal


# Directory containing your data
counts_directory <- "~/Git/P24-203/data/count"
suffix <- "/outs/"

# Get all sample directories in "data/count"
sample_dirs <- list.dirs(counts_directory, full.names = TRUE, recursive = FALSE)
sample_dirs <- sort(sample_dirs)
sample_names <- gsub(".*/", "", sample_dirs)  # Extract sample names from the folder paths

# Set up parallel backend (adjust cores as needed)
cl <- makeCluster(4)
registerDoParallel(cl)

# Parallel loop to process all samples
scs_list <- foreach(i = 1:length(sample_names), .packages = c("Seurat", "SoupX", "ggplot2")) %dopar% {
  
  sample_name <- sample_names[i]  # Corrected variable name
  
  # Construct paths to raw and filtered feature matrices
  filtered_path <- paste0(sample_dirs[i], suffix, "filtered_feature_bc_matrix")
  raw_path <- paste0(sample_dirs[i], suffix, "raw_feature_bc_matrix")
  
  # Load raw and filtered counts using Seurat's Read10X
  toc <- Seurat::Read10X(filtered_path)
  tod <- Seurat::Read10X(raw_path)
  
  # Ensure matrices are sparse
  tod <- as(tod, "dgCMatrix")  
  toc <- as(toc, "dgCMatrix")  

  # Create a SoupChannel object
  sc <- SoupChannel(tod, toc)
  sc$tod <- tod
  
  # Estimate the soup profile (ambient RNA)
  sc <- estimateSoup(sc)
  
  # Subset joined_seurat to only include cells in sc$toc
  sc_cells <- colnames(sc$toc) 
  sc_cells_renamed <- paste0(sample_name, "_", sc_cells)
  
  dvc.subset <- subset(dvc.list[[sample_name]], cells = sc_cells_renamed)

  #cluster_assignments_subset <- cluster_assignments[colnames(joined_seurat_subset)]
  
  # Extract cluster assignments
  cluster_assignments_subset <- cluster_assignments_list[[sample_name]][colnames(dvc.subset)]
  names(cluster_assignments_subset) <- gsub("^.*_", "", names(cluster_assignments_subset))

  # Handle missing cells
  missing_cells <- setdiff(colnames(sc$toc), names(cluster_assignments_subset))
  cluster_assignments_subset[missing_cells] <- 0

  # Add cluster assignments to SoupX object
  sc <- setClusters(sc, cluster_assignments_subset)

  # Set dimensionality reduction for SoupChannel
  dvc.subset@meta.data$RD1 <- dvc.subset@reductions$umap@cell.embeddings[,1]
  dvc.subset@meta.data$RD2 <- dvc.subset@reductions$umap@cell.embeddings[,2]
  
  sc <- setDR(sc, dvc.subset@meta.data[sc_cells_renamed, c("RD1", "RD2")])

  # Automatically estimate contamination
  sc <- autoEstCont(sc)

  # Adjust counts
  adjusted_counts <- adjustCounts(sc)

  # ----- PLOTTING -----
  dd <- na.omit(dvc.subset@meta.data[sc_cells_renamed, ])
  
  # Plot Seurat Cluster Annotations
  mids = aggregate(cbind(RD1, RD2) ~ seurat_clusters, data = dd, FUN = mean)
  gg = ggplot(dd, aes(RD1, RD2)) +
      geom_point(aes(colour = seurat_clusters), size = 0.2) +
      geom_label(data = mids, aes(label = seurat_clusters)) +
      ggtitle(paste0(sample_name, " - Seurat Cluster Annotation")) +
      guides(colour = guide_legend(override.aes = list(size = 1)))
  ggsave(paste0(sample_name, "_Seurat_Cluster_Annotation.png"), gg)

  # Plot Gfral expression
  dd$gfral <- sc$toc["Gfral", gsub("^.*_", "", rownames(dd))]
  gg1 <- ggplot(dd, aes(RD1, RD2)) + geom_point(aes(colour = gfral > 0))
  ggsave(paste0(sample_name, "_Gfral_Expression.png"), gg1)

  gg1_2 <- plotMarkerMap(sc, "Gfral")
  ggsave(paste0(sample_name, "_Gfral_MarkerMap.png"), gg1_2)

  # Plot Adcysrat1 expression
  dd$adcyap1 <- sc$toc["Adcyap1", gsub("^.*_", "", rownames(dd))]
  gg2 <- ggplot(dd, aes(RD1, RD2)) + geom_point(aes(colour = adcyap1 > 0))
  ggsave(paste0(sample_name, "_Adcyap1_Expression.png"), gg2)

  gg2_2 <- plotMarkerMap(sc, "Adcyap1")
  ggsave(paste0(sample_name, "_Adcyap1_MarkerMap.png"), gg2_2)

  # Plot Change Maps
  gg1_3 <- plotChangeMap(sc, adjusted_counts, "Gfral")
  gg2_3 <- plotChangeMap(sc, adjusted_counts, "Adcyap1")
  ggsave(paste0(sample_name, "_Gfral_ChangeMap.png"), gg1_3)
  ggsave(paste0(sample_name, "_Adcyap1_ChangeMap.png"), gg2_3)

  # Return the processed SoupChannel
  list(sample_name = sample_name, sc = sc)
}

# Stop the cluster after processing
stopCluster(cl)

# Convert results into a named list
scs <- setNames(lapply(scs_list, function(x) x$sc), sapply(scs_list, function(x) x$sample_name))
#saveRDS(scs, "soup_channels_tmp.rds")

Create Seurat objects for each Soup channel


# Create an empty list to store Seurat objects
srat_list <- list()

# Iterate through each SoupX channel
for (nom in names(scs)) {
    # Clean channel named 'nom'
    tmp <- adjustCounts(scs[[nom]])
    
    # Add experiment name to cell barcodes to make them unique (optional)
    colnames(tmp) <- paste0(nom, "_", colnames(tmp))

    # Create a Seurat object for the current sample
    srat_list[[nom]] <- CreateSeuratObject(counts = tmp, project = nom)
}

Normalization after ambient RNA removal

srat_list <- lapply(srat_list, function(seurat_obj) {
    seurat_obj <- NormalizeData(seurat_obj)
    seurat_obj <- FindVariableFeatures(seurat_obj, selection.method = "vst", nfeatures = 2000, verbose = FALSE)
    seurat_obj <- ScaleData(seurat_obj, vars.to.regress = "nCount_RNA", verbose = FALSE)
    seurat_obj <- RunPCA(seurat_obj, npcs = 30, verbose = FALSE)
    seurat_obj <- RunUMAP(seurat_obj, reduction = "pca", dims = 1:30, verbose = FALSE)
    seurat_obj <- FindNeighbors(seurat_obj, dims = 1:30, verbose = FALSE)
    seurat_obj <- FindClusters(seurat_obj, resolution = 0.4, verbose = FALSE)
    return(seurat_obj)
})
saveRDS(srat_list, "after_soupx_tmp.rds")

Doublet removal

cl <- makeCluster(8)
registerDoParallel(cl)

clusterEvalQ(cl, {
  library(Seurat)
  library(DoubletFinder)
})
[[1]]
 [1] "DoubletFinder" "Seurat"        "SeuratObject"  "sp"            "stats"         "graphics"      "grDevices"     "utils"         "datasets"      "methods"       "base"         

[[2]]
 [1] "DoubletFinder" "Seurat"        "SeuratObject"  "sp"            "stats"         "graphics"      "grDevices"     "utils"         "datasets"      "methods"       "base"         

[[3]]
 [1] "DoubletFinder" "Seurat"        "SeuratObject"  "sp"            "stats"         "graphics"      "grDevices"     "utils"         "datasets"      "methods"       "base"         

[[4]]
 [1] "DoubletFinder" "Seurat"        "SeuratObject"  "sp"            "stats"         "graphics"      "grDevices"     "utils"         "datasets"      "methods"       "base"         

[[5]]
 [1] "DoubletFinder" "Seurat"        "SeuratObject"  "sp"            "stats"         "graphics"      "grDevices"     "utils"         "datasets"      "methods"       "base"         

[[6]]
 [1] "DoubletFinder" "Seurat"        "SeuratObject"  "sp"            "stats"         "graphics"      "grDevices"     "utils"         "datasets"      "methods"       "base"         

[[7]]
 [1] "DoubletFinder" "Seurat"        "SeuratObject"  "sp"            "stats"         "graphics"      "grDevices"     "utils"         "datasets"      "methods"       "base"         

[[8]]
 [1] "DoubletFinder" "Seurat"        "SeuratObject"  "sp"            "stats"         "graphics"      "grDevices"     "utils"         "datasets"      "methods"       "base"         
srat.list.wodoublets <- foreach(i = 1:length(srat_list), .packages = c("Seurat", "DoubletFinder")) %do% {
  tryCatch({
    set.seed(i)
    
    print(paste("Processing sample:", i))  

    # Check if srat_list[[i]] is valid
    if (is.null(srat_list[[i]])) {
      message(paste("Skipping sample", i, "because it is NULL"))
      return(NULL)
    }

    # Debugging: Check if data exists
    print(dim(srat_list[[i]]@assays$RNA))  

    # pK identification
    sweep.res.list_srat <- paramSweep(srat_list[[i]], PCs = 1:10, sct = FALSE)
    sweep.stats_srat <- summarizeSweep(sweep.res.list_srat, GT = FALSE)
    bcmvn_srat <- find.pK(sweep.stats_srat)
    pK <- bcmvn_srat$pK[which.max(bcmvn_srat$BCmetric)]
    pK <- as.numeric(as.character(pK))

    print(paste("Selected pK:", pK))  

    # Doublet removal 
    nExp_poi <- round(0.035 * ncol(srat_list[[i]]@assays$RNA))
    srat_list[[i]] <- doubletFinder(srat_list[[i]], PCs = 1:10, pN = 0.2, pK = pK, 
                                     nExp = nExp_poi, reuse.pANN = FALSE, sct = FALSE)

    colnames(srat_list[[i]]@meta.data)[6:7] <- c("pANN", "classifications")

    print(table(srat_list[[i]]@meta.data$classifications))

    srat.wodoublets <- subset(srat_list[[i]], subset = classifications == "Singlet")

    return(srat.wodoublets)  
  }, error = function(e) {
    message(paste("Error in sample", i, ":", e$message))
    return(NULL)
  })
}
[1] "Processing sample: 1"
[1] 55357  3784
Loading required package: fields
Loading required package: spam
Spam version 2.11-0 (2024-10-03) is loaded.
Type 'help( Spam)' or 'demo( spam)' for a short introduction 
and overview of this package.
Help for individual functions is also obtained by adding the
suffix '.spam' to the function name, e.g. 'help( chol.spam)'.

Attaching package: ‘spam’

The following object is masked from ‘package:stats4’:

    mle

The following objects are masked from ‘package:base’:

    backsolve, forwardsolve

Loading required package: viridisLite

Try help(fields) to get started.
[1] "Creating artificial doublets for pN = 5%"
[1] "Creating Seurat object..."
[1] "Normalizing Seurat object..."
Normalizing layer: counts
Performing log-normalization
0%   10   20   30   40   50   60   70   80   90   100%
[----|----|----|----|----|----|----|----|----|----|
**************************************************|
[1] "Finding variable genes..."
Finding variable features for layer counts
Calculating gene variances
0%   10   20   30   40   50   60   70   80   90   100%
[----|----|----|----|----|----|----|----|----|----|
**************************************************|
Calculating feature variances of standardized and clipped values
0%   10   20   30   40   50   60   70   80   90   100%
[----|----|----|----|----|----|----|----|----|----|
**************************************************|
[1] "Scaling data..."
Centering and scaling data matrix

  |                                                                                                                                                                                                                     
  |                                                                                                                                                                                                               |   0%
  |                                                                                                                                                                                                                     
  |========================================================================================================                                                                                                       |  50%
  |                                                                                                                                                                                                                     
  |===============================================================================================================================================================================================================| 100%
[1] "Running PCA..."
[1] "Calculating PC distance matrix..."
[1] "Defining neighborhoods..."
[1] "Computing pANN across all pK..."
[1] "pK = 0.005..."
[1] "pK = 0.01..."
[1] "pK = 0.02..."
[1] "pK = 0.03..."
[1] "pK = 0.04..."
[1] "pK = 0.05..."
[1] "pK = 0.06..."
[1] "pK = 0.07..."
[1] "pK = 0.08..."
[1] "pK = 0.09..."
[1] "pK = 0.1..."
[1] "pK = 0.11..."
[1] "pK = 0.12..."
[1] "pK = 0.13..."
[1] "pK = 0.14..."
[1] "pK = 0.15..."
[1] "pK = 0.16..."
[1] "pK = 0.17..."
[1] "pK = 0.18..."
[1] "pK = 0.19..."
[1] "pK = 0.2..."
[1] "pK = 0.21..."
[1] "pK = 0.22..."
[1] "pK = 0.23..."
[1] "pK = 0.24..."
[1] "pK = 0.25..."
[1] "pK = 0.26..."
[1] "pK = 0.27..."
[1] "pK = 0.28..."
[1] "pK = 0.29..."
[1] "pK = 0.3..."
[1] "Creating artificial doublets for pN = 10%"
[1] "Creating Seurat object..."
[1] "Normalizing Seurat object..."
Normalizing layer: counts
Performing log-normalization
0%   10   20   30   40   50   60   70   80   90   100%
[----|----|----|----|----|----|----|----|----|----|
**************************************************|
[1] "Finding variable genes..."
Finding variable features for layer counts
Calculating gene variances
0%   10   20   30   40   50   60   70   80   90   100%
[----|----|----|----|----|----|----|----|----|----|
**************************************************|
Calculating feature variances of standardized and clipped values
0%   10   20   30   40   50   60   70   80   90   100%
[----|----|----|----|----|----|----|----|----|----|
**************************************************|
[1] "Scaling data..."
Centering and scaling data matrix

  |                                                                                                                                                                                                                     
  |                                                                                                                                                                                                               |   0%
  |                                                                                                                                                                                                                     
  |========================================================================================================                                                                                                       |  50%
  |                                                                                                                                                                                                                     
  |===============================================================================================================================================================================================================| 100%
[1] "Running PCA..."
[1] "Calculating PC distance matrix..."
[1] "Defining neighborhoods..."
[1] "Computing pANN across all pK..."
[1] "pK = 0.005..."
[1] "pK = 0.01..."
[1] "pK = 0.02..."
[1] "pK = 0.03..."
[1] "pK = 0.04..."
[1] "pK = 0.05..."
[1] "pK = 0.06..."
[1] "pK = 0.07..."
[1] "pK = 0.08..."
[1] "pK = 0.09..."
[1] "pK = 0.1..."
[1] "pK = 0.11..."
[1] "pK = 0.12..."
[1] "pK = 0.13..."
[1] "pK = 0.14..."
[1] "pK = 0.15..."
[1] "pK = 0.16..."
[1] "pK = 0.17..."
[1] "pK = 0.18..."
[1] "pK = 0.19..."
[1] "pK = 0.2..."
[1] "pK = 0.21..."
[1] "pK = 0.22..."
[1] "pK = 0.23..."
[1] "pK = 0.24..."
[1] "pK = 0.25..."
[1] "pK = 0.26..."
[1] "pK = 0.27..."
[1] "pK = 0.28..."
[1] "pK = 0.29..."
[1] "pK = 0.3..."
[1] "Creating artificial doublets for pN = 15%"
[1] "Creating Seurat object..."
[1] "Normalizing Seurat object..."
Normalizing layer: counts
Performing log-normalization
0%   10   20   30   40   50   60   70   80   90   100%
[----|----|----|----|----|----|----|----|----|----|
**************************************************|
[1] "Finding variable genes..."
Finding variable features for layer counts
Calculating gene variances
0%   10   20   30   40   50   60   70   80   90   100%
[----|----|----|----|----|----|----|----|----|----|
**************************************************|
Calculating feature variances of standardized and clipped values
0%   10   20   30   40   50   60   70   80   90   100%
[----|----|----|----|----|----|----|----|----|----|
**************************************************|
[1] "Scaling data..."
Centering and scaling data matrix

  |                                                                                                                                                                                                                     
  |                                                                                                                                                                                                               |   0%
  |                                                                                                                                                                                                                     
  |========================================================================================================                                                                                                       |  50%
  |                                                                                                                                                                                                                     
  |===============================================================================================================================================================================================================| 100%
[1] "Running PCA..."
[1] "Calculating PC distance matrix..."
[1] "Defining neighborhoods..."
[1] "Computing pANN across all pK..."
[1] "pK = 0.005..."
[1] "pK = 0.01..."
[1] "pK = 0.02..."
[1] "pK = 0.03..."
[1] "pK = 0.04..."
[1] "pK = 0.05..."
[1] "pK = 0.06..."
[1] "pK = 0.07..."
[1] "pK = 0.08..."
[1] "pK = 0.09..."
[1] "pK = 0.1..."
[1] "pK = 0.11..."
[1] "pK = 0.12..."
[1] "pK = 0.13..."
[1] "pK = 0.14..."
[1] "pK = 0.15..."
[1] "pK = 0.16..."
[1] "pK = 0.17..."
[1] "pK = 0.18..."
[1] "pK = 0.19..."
[1] "pK = 0.2..."
[1] "pK = 0.21..."
[1] "pK = 0.22..."
[1] "pK = 0.23..."
[1] "pK = 0.24..."
[1] "pK = 0.25..."
[1] "pK = 0.26..."
[1] "pK = 0.27..."
[1] "pK = 0.28..."
[1] "pK = 0.29..."
[1] "pK = 0.3..."
[1] "Creating artificial doublets for pN = 20%"
[1] "Creating Seurat object..."
[1] "Normalizing Seurat object..."
Normalizing layer: counts
Performing log-normalization
0%   10   20   30   40   50   60   70   80   90   100%
[----|----|----|----|----|----|----|----|----|----|
**************************************************|
[1] "Finding variable genes..."
Finding variable features for layer counts
Calculating gene variances
0%   10   20   30   40   50   60   70   80   90   100%
[----|----|----|----|----|----|----|----|----|----|
**************************************************|
Calculating feature variances of standardized and clipped values
0%   10   20   30   40   50   60   70   80   90   100%
[----|----|----|----|----|----|----|----|----|----|
**************************************************|
[1] "Scaling data..."
Centering and scaling data matrix

  |                                                                                                                                                                                                                     
  |                                                                                                                                                                                                               |   0%
  |                                                                                                                                                                                                                     
  |========================================================================================================                                                                                                       |  50%
  |                                                                                                                                                                                                                     
  |===============================================================================================================================================================================================================| 100%
[1] "Running PCA..."
[1] "Calculating PC distance matrix..."
[1] "Defining neighborhoods..."
[1] "Computing pANN across all pK..."
[1] "pK = 0.005..."
[1] "pK = 0.01..."
[1] "pK = 0.02..."
[1] "pK = 0.03..."
[1] "pK = 0.04..."
[1] "pK = 0.05..."
[1] "pK = 0.06..."
[1] "pK = 0.07..."
[1] "pK = 0.08..."
[1] "pK = 0.09..."
[1] "pK = 0.1..."
[1] "pK = 0.11..."
[1] "pK = 0.12..."
[1] "pK = 0.13..."
[1] "pK = 0.14..."
[1] "pK = 0.15..."
[1] "pK = 0.16..."
[1] "pK = 0.17..."
[1] "pK = 0.18..."
[1] "pK = 0.19..."
[1] "pK = 0.2..."
[1] "pK = 0.21..."
[1] "pK = 0.22..."
[1] "pK = 0.23..."
[1] "pK = 0.24..."
[1] "pK = 0.25..."
[1] "pK = 0.26..."
[1] "pK = 0.27..."
[1] "pK = 0.28..."
[1] "pK = 0.29..."
[1] "pK = 0.3..."
[1] "Creating artificial doublets for pN = 25%"
[1] "Creating Seurat object..."
[1] "Normalizing Seurat object..."
Normalizing layer: counts
Performing log-normalization
0%   10   20   30   40   50   60   70   80   90   100%
[----|----|----|----|----|----|----|----|----|----|
**************************************************|
[1] "Finding variable genes..."
Finding variable features for layer counts
Calculating gene variances
0%   10   20   30   40   50   60   70   80   90   100%
[----|----|----|----|----|----|----|----|----|----|
**************************************************|
Calculating feature variances of standardized and clipped values
0%   10   20   30   40   50   60   70   80   90   100%
[----|----|----|----|----|----|----|----|----|----|
**************************************************|
[1] "Scaling data..."
Centering and scaling data matrix

  |                                                                                                                                                                                                                     
  |                                                                                                                                                                                                               |   0%
  |                                                                                                                                                                                                                     
  |========================================================================================================                                                                                                       |  50%
  |                                                                                                                                                                                                                     
  |===============================================================================================================================================================================================================| 100%
[1] "Running PCA..."
[1] "Calculating PC distance matrix..."
[1] "Defining neighborhoods..."
[1] "Computing pANN across all pK..."
[1] "pK = 0.005..."
[1] "pK = 0.01..."
[1] "pK = 0.02..."
[1] "pK = 0.03..."
[1] "pK = 0.04..."
[1] "pK = 0.05..."
[1] "pK = 0.06..."
[1] "pK = 0.07..."
[1] "pK = 0.08..."
[1] "pK = 0.09..."
[1] "pK = 0.1..."
[1] "pK = 0.11..."
[1] "pK = 0.12..."
[1] "pK = 0.13..."
[1] "pK = 0.14..."
[1] "pK = 0.15..."
[1] "pK = 0.16..."
[1] "pK = 0.17..."
[1] "pK = 0.18..."
[1] "pK = 0.19..."
[1] "pK = 0.2..."
[1] "pK = 0.21..."
[1] "pK = 0.22..."
[1] "pK = 0.23..."
[1] "pK = 0.24..."
[1] "pK = 0.25..."
[1] "pK = 0.26..."
[1] "pK = 0.27..."
[1] "pK = 0.28..."
[1] "pK = 0.29..."
[1] "pK = 0.3..."
[1] "Creating artificial doublets for pN = 30%"
[1] "Creating Seurat object..."
[1] "Normalizing Seurat object..."
Normalizing layer: counts
Performing log-normalization
0%   10   20   30   40   50   60   70   80   90   100%
[----|----|----|----|----|----|----|----|----|----|
**************************************************|
[1] "Finding variable genes..."
Finding variable features for layer counts
Calculating gene variances
0%   10   20   30   40   50   60   70   80   90   100%
[----|----|----|----|----|----|----|----|----|----|
**************************************************|
Calculating feature variances of standardized and clipped values
0%   10   20   30   40   50   60   70   80   90   100%
[----|----|----|----|----|----|----|----|----|----|
**************************************************|
[1] "Scaling data..."
Centering and scaling data matrix

  |                                                                                                                                                                                                                     
  |                                                                                                                                                                                                               |   0%
  |                                                                                                                                                                                                                     
  |========================================================================================================                                                                                                       |  50%
  |                                                                                                                                                                                                                     
  |===============================================================================================================================================================================================================| 100%
[1] "Running PCA..."
[1] "Calculating PC distance matrix..."
[1] "Defining neighborhoods..."
[1] "Computing pANN across all pK..."
[1] "pK = 0.005..."
[1] "pK = 0.01..."
[1] "pK = 0.02..."
[1] "pK = 0.03..."
[1] "pK = 0.04..."
[1] "pK = 0.05..."
[1] "pK = 0.06..."
[1] "pK = 0.07..."
[1] "pK = 0.08..."
[1] "pK = 0.09..."
[1] "pK = 0.1..."
[1] "pK = 0.11..."
[1] "pK = 0.12..."
[1] "pK = 0.13..."
[1] "pK = 0.14..."
[1] "pK = 0.15..."
[1] "pK = 0.16..."
[1] "pK = 0.17..."
[1] "pK = 0.18..."
[1] "pK = 0.19..."
[1] "pK = 0.2..."
[1] "pK = 0.21..."
[1] "pK = 0.22..."
[1] "pK = 0.23..."
[1] "pK = 0.24..."
[1] "pK = 0.25..."
[1] "pK = 0.26..."
[1] "pK = 0.27..."
[1] "pK = 0.28..."
[1] "pK = 0.29..."
[1] "pK = 0.3..."
Loading required package: KernSmooth
KernSmooth 2.23 loaded
Copyright M. P. Wand 1997-2009
Loading required package: ROCR
NULL
[1] "Selected pK: 0.14"
[1] "Creating 946 artificial doublets..."
[1] "Creating Seurat object..."
[1] "Normalizing Seurat object..."
Performing log-normalization
0%   10   20   30   40   50   60   70   80   90   100%
[----|----|----|----|----|----|----|----|----|----|
**************************************************|
[1] "Finding variable genes..."
Calculating gene variances
0%   10   20   30   40   50   60   70   80   90   100%
[----|----|----|----|----|----|----|----|----|----|
**************************************************|
Calculating feature variances of standardized and clipped values
0%   10   20   30   40   50   60   70   80   90   100%
[----|----|----|----|----|----|----|----|----|----|
**************************************************|
[1] "Scaling data..."

  |                                                                                                                                                                                                                     
  |                                                                                                                                                                                                               |   0%
  |                                                                                                                                                                                                                     
  |========================================================================================================                                                                                                       |  50%
  |                                                                                                                                                                                                                     
  |===============================================================================================================================================================================================================| 100%
[1] "Running PCA..."
[1] "Calculating PC distance matrix..."
[1] "Computing pANN..."
[1] "Classifying doublets.."

Doublet Singlet 
    132    3652 
[1] "Processing sample: 2"
[1] 55357  6931
[1] "Creating artificial doublets for pN = 5%"
[1] "Creating Seurat object..."
[1] "Normalizing Seurat object..."
Performing log-normalization
0%   10   20   30   40   50   60   70   80   90   100%
[----|----|----|----|----|----|----|----|----|----|
**************************************************|
[1] "Finding variable genes..."
Calculating gene variances
0%   10   20   30   40   50   60   70   80   90   100%
[----|----|----|----|----|----|----|----|----|----|
**************************************************|
Calculating feature variances of standardized and clipped values
0%   10   20   30   40   50   60   70   80   90   100%
[----|----|----|----|----|----|----|----|----|----|
**************************************************|
[1] "Scaling data..."

  |                                                                                                                                                                                                                     
  |                                                                                                                                                                                                               |   0%
  |                                                                                                                                                                                                                     
  |========================================================================================================                                                                                                       |  50%
  |                                                                                                                                                                                                                     
  |===============================================================================================================================================================================================================| 100%
[1] "Running PCA..."
[1] "Calculating PC distance matrix..."
[1] "Defining neighborhoods..."
[1] "Computing pANN across all pK..."
[1] "pK = 0.005..."
[1] "pK = 0.01..."
[1] "pK = 0.02..."
[1] "pK = 0.03..."
[1] "pK = 0.04..."
[1] "pK = 0.05..."
[1] "pK = 0.06..."
[1] "pK = 0.07..."
[1] "pK = 0.08..."
[1] "pK = 0.09..."
[1] "pK = 0.1..."
[1] "pK = 0.11..."
[1] "pK = 0.12..."
[1] "pK = 0.13..."
[1] "pK = 0.14..."
[1] "pK = 0.15..."
[1] "pK = 0.16..."
[1] "pK = 0.17..."
[1] "pK = 0.18..."
[1] "pK = 0.19..."
[1] "pK = 0.2..."
[1] "pK = 0.21..."
[1] "pK = 0.22..."
[1] "pK = 0.23..."
[1] "pK = 0.24..."
[1] "pK = 0.25..."
[1] "pK = 0.26..."
[1] "pK = 0.27..."
[1] "pK = 0.28..."
[1] "pK = 0.29..."
[1] "pK = 0.3..."
[1] "Creating artificial doublets for pN = 10%"
[1] "Creating Seurat object..."
[1] "Normalizing Seurat object..."
Performing log-normalization
0%   10   20   30   40   50   60   70   80   90   100%
[----|----|----|----|----|----|----|----|----|----|
**************************************************|
[1] "Finding variable genes..."
Calculating gene variances
0%   10   20   30   40   50   60   70   80   90   100%
[----|----|----|----|----|----|----|----|----|----|
**************************************************|
Calculating feature variances of standardized and clipped values
0%   10   20   30   40   50   60   70   80   90   100%
[----|----|----|----|----|----|----|----|----|----|
**************************************************|
[1] "Scaling data..."

  |                                                                                                                                                                                                                     
  |                                                                                                                                                                                                               |   0%
  |                                                                                                                                                                                                                     
  |========================================================================================================                                                                                                       |  50%
  |                                                                                                                                                                                                                     
  |===============================================================================================================================================================================================================| 100%
[1] "Running PCA..."
[1] "Calculating PC distance matrix..."
[1] "Defining neighborhoods..."
[1] "Computing pANN across all pK..."
[1] "pK = 0.005..."
[1] "pK = 0.01..."
[1] "pK = 0.02..."
[1] "pK = 0.03..."
[1] "pK = 0.04..."
[1] "pK = 0.05..."
[1] "pK = 0.06..."
[1] "pK = 0.07..."
[1] "pK = 0.08..."
[1] "pK = 0.09..."
[1] "pK = 0.1..."
[1] "pK = 0.11..."
[1] "pK = 0.12..."
[1] "pK = 0.13..."
[1] "pK = 0.14..."
[1] "pK = 0.15..."
[1] "pK = 0.16..."
[1] "pK = 0.17..."
[1] "pK = 0.18..."
[1] "pK = 0.19..."
[1] "pK = 0.2..."
[1] "pK = 0.21..."
[1] "pK = 0.22..."
[1] "pK = 0.23..."
[1] "pK = 0.24..."
[1] "pK = 0.25..."
[1] "pK = 0.26..."
[1] "pK = 0.27..."
[1] "pK = 0.28..."
[1] "pK = 0.29..."
[1] "pK = 0.3..."
[1] "Creating artificial doublets for pN = 15%"
[1] "Creating Seurat object..."
[1] "Normalizing Seurat object..."
Performing log-normalization
0%   10   20   30   40   50   60   70   80   90   100%
[----|----|----|----|----|----|----|----|----|----|
**************************************************|
[1] "Finding variable genes..."
Calculating gene variances
0%   10   20   30   40   50   60   70   80   90   100%
[----|----|----|----|----|----|----|----|----|----|
**************************************************|
Calculating feature variances of standardized and clipped values
0%   10   20   30   40   50   60   70   80   90   100%
[----|----|----|----|----|----|----|----|----|----|
**************************************************|
[1] "Scaling data..."

  |                                                                                                                                                                                                                     
  |                                                                                                                                                                                                               |   0%
  |                                                                                                                                                                                                                     
  |========================================================================================================                                                                                                       |  50%
  |                                                                                                                                                                                                                     
  |===============================================================================================================================================================================================================| 100%
[1] "Running PCA..."
[1] "Calculating PC distance matrix..."
[1] "Defining neighborhoods..."
[1] "Computing pANN across all pK..."
[1] "pK = 0.005..."
[1] "pK = 0.01..."
[1] "pK = 0.02..."
[1] "pK = 0.03..."
[1] "pK = 0.04..."
[1] "pK = 0.05..."
[1] "pK = 0.06..."
[1] "pK = 0.07..."
[1] "pK = 0.08..."
[1] "pK = 0.09..."
[1] "pK = 0.1..."
[1] "pK = 0.11..."
[1] "pK = 0.12..."
[1] "pK = 0.13..."
[1] "pK = 0.14..."
[1] "pK = 0.15..."
[1] "pK = 0.16..."
[1] "pK = 0.17..."
[1] "pK = 0.18..."
[1] "pK = 0.19..."
[1] "pK = 0.2..."
[1] "pK = 0.21..."
[1] "pK = 0.22..."
[1] "pK = 0.23..."
[1] "pK = 0.24..."
[1] "pK = 0.25..."
[1] "pK = 0.26..."
[1] "pK = 0.27..."
[1] "pK = 0.28..."
[1] "pK = 0.29..."
[1] "pK = 0.3..."
[1] "Creating artificial doublets for pN = 20%"
[1] "Creating Seurat object..."
[1] "Normalizing Seurat object..."
Performing log-normalization
0%   10   20   30   40   50   60   70   80   90   100%
[----|----|----|----|----|----|----|----|----|----|
**************************************************|
[1] "Finding variable genes..."
Calculating gene variances
0%   10   20   30   40   50   60   70   80   90   100%
[----|----|----|----|----|----|----|----|----|----|
**************************************************|
Calculating feature variances of standardized and clipped values
0%   10   20   30   40   50   60   70   80   90   100%
[----|----|----|----|----|----|----|----|----|----|
**************************************************|
[1] "Scaling data..."

  |                                                                                                                                                                                                                     
  |                                                                                                                                                                                                               |   0%
  |                                                                                                                                                                                                                     
  |========================================================================================================                                                                                                       |  50%
  |                                                                                                                                                                                                                     
  |===============================================================================================================================================================================================================| 100%
[1] "Running PCA..."
[1] "Calculating PC distance matrix..."
[1] "Defining neighborhoods..."
[1] "Computing pANN across all pK..."
[1] "pK = 0.005..."
[1] "pK = 0.01..."
[1] "pK = 0.02..."
[1] "pK = 0.03..."
[1] "pK = 0.04..."
[1] "pK = 0.05..."
[1] "pK = 0.06..."
[1] "pK = 0.07..."
[1] "pK = 0.08..."
[1] "pK = 0.09..."
[1] "pK = 0.1..."
[1] "pK = 0.11..."
[1] "pK = 0.12..."
[1] "pK = 0.13..."
[1] "pK = 0.14..."
[1] "pK = 0.15..."
[1] "pK = 0.16..."
[1] "pK = 0.17..."
[1] "pK = 0.18..."
[1] "pK = 0.19..."
[1] "pK = 0.2..."
[1] "pK = 0.21..."
[1] "pK = 0.22..."
[1] "pK = 0.23..."
[1] "pK = 0.24..."
[1] "pK = 0.25..."
[1] "pK = 0.26..."
[1] "pK = 0.27..."
[1] "pK = 0.28..."
[1] "pK = 0.29..."
[1] "pK = 0.3..."
[1] "Creating artificial doublets for pN = 25%"
[1] "Creating Seurat object..."
[1] "Normalizing Seurat object..."
Performing log-normalization
0%   10   20   30   40   50   60   70   80   90   100%
[----|----|----|----|----|----|----|----|----|----|
**************************************************|
[1] "Finding variable genes..."
Calculating gene variances
0%   10   20   30   40   50   60   70   80   90   100%
[----|----|----|----|----|----|----|----|----|----|
**************************************************|
Calculating feature variances of standardized and clipped values
0%   10   20   30   40   50   60   70   80   90   100%
[----|----|----|----|----|----|----|----|----|----|
**************************************************|
[1] "Scaling data..."

  |                                                                                                                                                                                                                     
  |                                                                                                                                                                                                               |   0%
  |                                                                                                                                                                                                                     
  |========================================================================================================                                                                                                       |  50%
  |                                                                                                                                                                                                                     
  |===============================================================================================================================================================================================================| 100%
[1] "Running PCA..."
[1] "Calculating PC distance matrix..."
[1] "Defining neighborhoods..."
[1] "Computing pANN across all pK..."
[1] "pK = 0.005..."
[1] "pK = 0.01..."
[1] "pK = 0.02..."
[1] "pK = 0.03..."
[1] "pK = 0.04..."
[1] "pK = 0.05..."
[1] "pK = 0.06..."
[1] "pK = 0.07..."
[1] "pK = 0.08..."
[1] "pK = 0.09..."
[1] "pK = 0.1..."
[1] "pK = 0.11..."
[1] "pK = 0.12..."
[1] "pK = 0.13..."
[1] "pK = 0.14..."
[1] "pK = 0.15..."
[1] "pK = 0.16..."
[1] "pK = 0.17..."
[1] "pK = 0.18..."
[1] "pK = 0.19..."
[1] "pK = 0.2..."
[1] "pK = 0.21..."
[1] "pK = 0.22..."
[1] "pK = 0.23..."
[1] "pK = 0.24..."
[1] "pK = 0.25..."
[1] "pK = 0.26..."
[1] "pK = 0.27..."
[1] "pK = 0.28..."
[1] "pK = 0.29..."
[1] "pK = 0.3..."
[1] "Creating artificial doublets for pN = 30%"
[1] "Creating Seurat object..."
[1] "Normalizing Seurat object..."
Performing log-normalization
0%   10   20   30   40   50   60   70   80   90   100%
[----|----|----|----|----|----|----|----|----|----|
**************************************************|
[1] "Finding variable genes..."
Calculating gene variances
0%   10   20   30   40   50   60   70   80   90   100%
[----|----|----|----|----|----|----|----|----|----|
**************************************************|
Calculating feature variances of standardized and clipped values
0%   10   20   30   40   50   60   70   80   90   100%
[----|----|----|----|----|----|----|----|----|----|
**************************************************|
[1] "Scaling data..."

  |                                                                                                                                                                                                                     
  |                                                                                                                                                                                                               |   0%
  |                                                                                                                                                                                                                     
  |========================================================================================================                                                                                                       |  50%
  |                                                                                                                                                                                                                     
  |===============================================================================================================================================================================================================| 100%
[1] "Running PCA..."
[1] "Calculating PC distance matrix..."
[1] "Defining neighborhoods..."
[1] "Computing pANN across all pK..."
[1] "pK = 0.005..."
[1] "pK = 0.01..."
[1] "pK = 0.02..."
[1] "pK = 0.03..."
[1] "pK = 0.04..."
[1] "pK = 0.05..."
[1] "pK = 0.06..."
[1] "pK = 0.07..."
[1] "pK = 0.08..."
[1] "pK = 0.09..."
[1] "pK = 0.1..."
[1] "pK = 0.11..."
[1] "pK = 0.12..."
[1] "pK = 0.13..."
[1] "pK = 0.14..."
[1] "pK = 0.15..."
[1] "pK = 0.16..."
[1] "pK = 0.17..."
[1] "pK = 0.18..."
[1] "pK = 0.19..."
[1] "pK = 0.2..."
[1] "pK = 0.21..."
[1] "pK = 0.22..."
[1] "pK = 0.23..."
[1] "pK = 0.24..."
[1] "pK = 0.25..."
[1] "pK = 0.26..."
[1] "pK = 0.27..."
[1] "pK = 0.28..."
[1] "pK = 0.29..."
[1] "pK = 0.3..."

NULL
[1] "Selected pK: 0.005"
[1] "Creating 1733 artificial doublets..."
[1] "Creating Seurat object..."
[1] "Normalizing Seurat object..."
Normalizing layer: counts
Performing log-normalization
0%   10   20   30   40   50   60   70   80   90   100%
[----|----|----|----|----|----|----|----|----|----|
**************************************************|
[1] "Finding variable genes..."
Finding variable features for layer counts
Calculating gene variances
0%   10   20   30   40   50   60   70   80   90   100%
[----|----|----|----|----|----|----|----|----|----|
**************************************************|
Calculating feature variances of standardized and clipped values
0%   10   20   30   40   50   60   70   80   90   100%
[----|----|----|----|----|----|----|----|----|----|
**************************************************|
[1] "Scaling data..."
Centering and scaling data matrix

  |                                                                                                                                                                                                                     
  |                                                                                                                                                                                                               |   0%
  |                                                                                                                                                                                                                     
  |========================================================================================================                                                                                                       |  50%
  |                                                                                                                                                                                                                     
  |===============================================================================================================================================================================================================| 100%
[1] "Running PCA..."
[1] "Calculating PC distance matrix..."
[1] "Computing pANN..."
[1] "Classifying doublets.."

Doublet Singlet 
    243    6688 
[1] "Processing sample: 3"
[1] 55357  3822
[1] "Creating artificial doublets for pN = 5%"
[1] "Creating Seurat object..."
[1] "Normalizing Seurat object..."
Normalizing layer: counts
Performing log-normalization
0%   10   20   30   40   50   60   70   80   90   100%
[----|----|----|----|----|----|----|----|----|----|
**************************************************|
[1] "Finding variable genes..."
Finding variable features for layer counts
Calculating gene variances
0%   10   20   30   40   50   60   70   80   90   100%
[----|----|----|----|----|----|----|----|----|----|
**************************************************|
Calculating feature variances of standardized and clipped values
0%   10   20   30   40   50   60   70   80   90   100%
[----|----|----|----|----|----|----|----|----|----|
**************************************************|
[1] "Scaling data..."
Centering and scaling data matrix

  |                                                                                                                                                                                                                     
  |                                                                                                                                                                                                               |   0%
  |                                                                                                                                                                                                                     
  |========================================================================================================                                                                                                       |  50%
  |                                                                                                                                                                                                                     
  |===============================================================================================================================================================================================================| 100%
[1] "Running PCA..."
[1] "Calculating PC distance matrix..."
[1] "Defining neighborhoods..."
[1] "Computing pANN across all pK..."
[1] "pK = 0.005..."
[1] "pK = 0.01..."
[1] "pK = 0.02..."
[1] "pK = 0.03..."
[1] "pK = 0.04..."
[1] "pK = 0.05..."
[1] "pK = 0.06..."
[1] "pK = 0.07..."
[1] "pK = 0.08..."
[1] "pK = 0.09..."
[1] "pK = 0.1..."
[1] "pK = 0.11..."
[1] "pK = 0.12..."
[1] "pK = 0.13..."
[1] "pK = 0.14..."
[1] "pK = 0.15..."
[1] "pK = 0.16..."
[1] "pK = 0.17..."
[1] "pK = 0.18..."
[1] "pK = 0.19..."
[1] "pK = 0.2..."
[1] "pK = 0.21..."
[1] "pK = 0.22..."
[1] "pK = 0.23..."
[1] "pK = 0.24..."
[1] "pK = 0.25..."
[1] "pK = 0.26..."
[1] "pK = 0.27..."
[1] "pK = 0.28..."
[1] "pK = 0.29..."
[1] "pK = 0.3..."
[1] "Creating artificial doublets for pN = 10%"
[1] "Creating Seurat object..."
[1] "Normalizing Seurat object..."
Normalizing layer: counts
Performing log-normalization
0%   10   20   30   40   50   60   70   80   90   100%
[----|----|----|----|----|----|----|----|----|----|
**************************************************|
[1] "Finding variable genes..."
Finding variable features for layer counts
Calculating gene variances
0%   10   20   30   40   50   60   70   80   90   100%
[----|----|----|----|----|----|----|----|----|----|
**************************************************|
Calculating feature variances of standardized and clipped values
0%   10   20   30   40   50   60   70   80   90   100%
[----|----|----|----|----|----|----|----|----|----|
**************************************************|
[1] "Scaling data..."
Centering and scaling data matrix

  |                                                                                                                                                                                                                     
  |                                                                                                                                                                                                               |   0%
  |                                                                                                                                                                                                                     
  |========================================================================================================                                                                                                       |  50%
  |                                                                                                                                                                                                                     
  |===============================================================================================================================================================================================================| 100%
[1] "Running PCA..."
[1] "Calculating PC distance matrix..."
[1] "Defining neighborhoods..."
[1] "Computing pANN across all pK..."
[1] "pK = 0.005..."
[1] "pK = 0.01..."
[1] "pK = 0.02..."
[1] "pK = 0.03..."
[1] "pK = 0.04..."
[1] "pK = 0.05..."
[1] "pK = 0.06..."
[1] "pK = 0.07..."
[1] "pK = 0.08..."
[1] "pK = 0.09..."
[1] "pK = 0.1..."
[1] "pK = 0.11..."
[1] "pK = 0.12..."
[1] "pK = 0.13..."
[1] "pK = 0.14..."
[1] "pK = 0.15..."
[1] "pK = 0.16..."
[1] "pK = 0.17..."
[1] "pK = 0.18..."
[1] "pK = 0.19..."
[1] "pK = 0.2..."
[1] "pK = 0.21..."
[1] "pK = 0.22..."
[1] "pK = 0.23..."
[1] "pK = 0.24..."
[1] "pK = 0.25..."
[1] "pK = 0.26..."
[1] "pK = 0.27..."
[1] "pK = 0.28..."
[1] "pK = 0.29..."
[1] "pK = 0.3..."
[1] "Creating artificial doublets for pN = 15%"
[1] "Creating Seurat object..."
[1] "Normalizing Seurat object..."
Normalizing layer: counts
Performing log-normalization
0%   10   20   30   40   50   60   70   80   90   100%
[----|----|----|----|----|----|----|----|----|----|
**************************************************|
[1] "Finding variable genes..."
Finding variable features for layer counts
Calculating gene variances
0%   10   20   30   40   50   60   70   80   90   100%
[----|----|----|----|----|----|----|----|----|----|
**************************************************|
Calculating feature variances of standardized and clipped values
0%   10   20   30   40   50   60   70   80   90   100%
[----|----|----|----|----|----|----|----|----|----|
**************************************************|
[1] "Scaling data..."
Centering and scaling data matrix

  |                                                                                                                                                                                                                     
  |                                                                                                                                                                                                               |   0%
  |                                                                                                                                                                                                                     
  |========================================================================================================                                                                                                       |  50%
  |                                                                                                                                                                                                                     
  |===============================================================================================================================================================================================================| 100%
[1] "Running PCA..."
[1] "Calculating PC distance matrix..."
[1] "Defining neighborhoods..."
[1] "Computing pANN across all pK..."
[1] "pK = 0.005..."
[1] "pK = 0.01..."
[1] "pK = 0.02..."
[1] "pK = 0.03..."
[1] "pK = 0.04..."
[1] "pK = 0.05..."
[1] "pK = 0.06..."
[1] "pK = 0.07..."
[1] "pK = 0.08..."
[1] "pK = 0.09..."
[1] "pK = 0.1..."
[1] "pK = 0.11..."
[1] "pK = 0.12..."
[1] "pK = 0.13..."
[1] "pK = 0.14..."
[1] "pK = 0.15..."
[1] "pK = 0.16..."
[1] "pK = 0.17..."
[1] "pK = 0.18..."
[1] "pK = 0.19..."
[1] "pK = 0.2..."
[1] "pK = 0.21..."
[1] "pK = 0.22..."
[1] "pK = 0.23..."
[1] "pK = 0.24..."
[1] "pK = 0.25..."
[1] "pK = 0.26..."
[1] "pK = 0.27..."
[1] "pK = 0.28..."
[1] "pK = 0.29..."
[1] "pK = 0.3..."
[1] "Creating artificial doublets for pN = 20%"
[1] "Creating Seurat object..."
[1] "Normalizing Seurat object..."
Normalizing layer: counts
Performing log-normalization
0%   10   20   30   40   50   60   70   80   90   100%
[----|----|----|----|----|----|----|----|----|----|
**************************************************|
[1] "Finding variable genes..."
Finding variable features for layer counts
Calculating gene variances
0%   10   20   30   40   50   60   70   80   90   100%
[----|----|----|----|----|----|----|----|----|----|
**************************************************|
Calculating feature variances of standardized and clipped values
0%   10   20   30   40   50   60   70   80   90   100%
[----|----|----|----|----|----|----|----|----|----|
**************************************************|
[1] "Scaling data..."
Centering and scaling data matrix

  |                                                                                                                                                                                                                     
  |                                                                                                                                                                                                               |   0%
  |                                                                                                                                                                                                                     
  |========================================================================================================                                                                                                       |  50%
  |                                                                                                                                                                                                                     
  |===============================================================================================================================================================================================================| 100%
[1] "Running PCA..."
[1] "Calculating PC distance matrix..."
[1] "Defining neighborhoods..."
[1] "Computing pANN across all pK..."
[1] "pK = 0.005..."
[1] "pK = 0.01..."
[1] "pK = 0.02..."
[1] "pK = 0.03..."
[1] "pK = 0.04..."
[1] "pK = 0.05..."
[1] "pK = 0.06..."
[1] "pK = 0.07..."
[1] "pK = 0.08..."
[1] "pK = 0.09..."
[1] "pK = 0.1..."
[1] "pK = 0.11..."
[1] "pK = 0.12..."
[1] "pK = 0.13..."
[1] "pK = 0.14..."
[1] "pK = 0.15..."
[1] "pK = 0.16..."
[1] "pK = 0.17..."
[1] "pK = 0.18..."
[1] "pK = 0.19..."
[1] "pK = 0.2..."
[1] "pK = 0.21..."
[1] "pK = 0.22..."
[1] "pK = 0.23..."
[1] "pK = 0.24..."
[1] "pK = 0.25..."
[1] "pK = 0.26..."
[1] "pK = 0.27..."
[1] "pK = 0.28..."
[1] "pK = 0.29..."
[1] "pK = 0.3..."
[1] "Creating artificial doublets for pN = 25%"
[1] "Creating Seurat object..."
[1] "Normalizing Seurat object..."
Normalizing layer: counts
Performing log-normalization
0%   10   20   30   40   50   60   70   80   90   100%
[----|----|----|----|----|----|----|----|----|----|
**************************************************|
[1] "Finding variable genes..."
Finding variable features for layer counts
Calculating gene variances
0%   10   20   30   40   50   60   70   80   90   100%
[----|----|----|----|----|----|----|----|----|----|
**************************************************|
Calculating feature variances of standardized and clipped values
0%   10   20   30   40   50   60   70   80   90   100%
[----|----|----|----|----|----|----|----|----|----|
**************************************************|
[1] "Scaling data..."
Centering and scaling data matrix

  |                                                                                                                                                                                                                     
  |                                                                                                                                                                                                               |   0%
  |                                                                                                                                                                                                                     
  |========================================================================================================                                                                                                       |  50%
  |                                                                                                                                                                                                                     
  |===============================================================================================================================================================================================================| 100%
[1] "Running PCA..."
[1] "Calculating PC distance matrix..."
[1] "Defining neighborhoods..."
[1] "Computing pANN across all pK..."
[1] "pK = 0.005..."
[1] "pK = 0.01..."
[1] "pK = 0.02..."
[1] "pK = 0.03..."
[1] "pK = 0.04..."
[1] "pK = 0.05..."
[1] "pK = 0.06..."
[1] "pK = 0.07..."
[1] "pK = 0.08..."
[1] "pK = 0.09..."
[1] "pK = 0.1..."
[1] "pK = 0.11..."
[1] "pK = 0.12..."
[1] "pK = 0.13..."
[1] "pK = 0.14..."
[1] "pK = 0.15..."
[1] "pK = 0.16..."
[1] "pK = 0.17..."
[1] "pK = 0.18..."
[1] "pK = 0.19..."
[1] "pK = 0.2..."
[1] "pK = 0.21..."
[1] "pK = 0.22..."
[1] "pK = 0.23..."
[1] "pK = 0.24..."
[1] "pK = 0.25..."
[1] "pK = 0.26..."
[1] "pK = 0.27..."
[1] "pK = 0.28..."
[1] "pK = 0.29..."
[1] "pK = 0.3..."
[1] "Creating artificial doublets for pN = 30%"
[1] "Creating Seurat object..."
[1] "Normalizing Seurat object..."
Normalizing layer: counts
Performing log-normalization
0%   10   20   30   40   50   60   70   80   90   100%
[----|----|----|----|----|----|----|----|----|----|
**************************************************|
[1] "Finding variable genes..."
Finding variable features for layer counts
Calculating gene variances
0%   10   20   30   40   50   60   70   80   90   100%
[----|----|----|----|----|----|----|----|----|----|
**************************************************|
Calculating feature variances of standardized and clipped values
0%   10   20   30   40   50   60   70   80   90   100%
[----|----|----|----|----|----|----|----|----|----|
**************************************************|
[1] "Scaling data..."
Centering and scaling data matrix

  |                                                                                                                                                                                                                     
  |                                                                                                                                                                                                               |   0%
  |                                                                                                                                                                                                                     
  |========================================================================================================                                                                                                       |  50%
  |                                                                                                                                                                                                                     
  |===============================================================================================================================================================================================================| 100%
[1] "Running PCA..."
[1] "Calculating PC distance matrix..."
[1] "Defining neighborhoods..."
[1] "Computing pANN across all pK..."
[1] "pK = 0.005..."
[1] "pK = 0.01..."
[1] "pK = 0.02..."
[1] "pK = 0.03..."
[1] "pK = 0.04..."
[1] "pK = 0.05..."
[1] "pK = 0.06..."
[1] "pK = 0.07..."
[1] "pK = 0.08..."
[1] "pK = 0.09..."
[1] "pK = 0.1..."
[1] "pK = 0.11..."
[1] "pK = 0.12..."
[1] "pK = 0.13..."
[1] "pK = 0.14..."
[1] "pK = 0.15..."
[1] "pK = 0.16..."
[1] "pK = 0.17..."
[1] "pK = 0.18..."
[1] "pK = 0.19..."
[1] "pK = 0.2..."
[1] "pK = 0.21..."
[1] "pK = 0.22..."
[1] "pK = 0.23..."
[1] "pK = 0.24..."
[1] "pK = 0.25..."
[1] "pK = 0.26..."
[1] "pK = 0.27..."
[1] "pK = 0.28..."
[1] "pK = 0.29..."
[1] "pK = 0.3..."

NULL
[1] "Selected pK: 0.005"
[1] "Creating 956 artificial doublets..."
[1] "Creating Seurat object..."
[1] "Normalizing Seurat object..."
Normalizing layer: counts
Performing log-normalization
0%   10   20   30   40   50   60   70   80   90   100%
[----|----|----|----|----|----|----|----|----|----|
**************************************************|
[1] "Finding variable genes..."
Finding variable features for layer counts
Calculating gene variances
0%   10   20   30   40   50   60   70   80   90   100%
[----|----|----|----|----|----|----|----|----|----|
**************************************************|
Calculating feature variances of standardized and clipped values
0%   10   20   30   40   50   60   70   80   90   100%
[----|----|----|----|----|----|----|----|----|----|
**************************************************|
[1] "Scaling data..."
Centering and scaling data matrix

  |                                                                                                                                                                                                                     
  |                                                                                                                                                                                                               |   0%
  |                                                                                                                                                                                                                     
  |========================================================================================================                                                                                                       |  50%
  |                                                                                                                                                                                                                     
  |===============================================================================================================================================================================================================| 100%
[1] "Running PCA..."
[1] "Calculating PC distance matrix..."
[1] "Computing pANN..."
[1] "Classifying doublets.."

Doublet Singlet 
    134    3688 
[1] "Processing sample: 4"
[1] 55357  3635
[1] "Creating artificial doublets for pN = 5%"
[1] "Creating Seurat object..."
[1] "Normalizing Seurat object..."
Normalizing layer: counts
Performing log-normalization
0%   10   20   30   40   50   60   70   80   90   100%
[----|----|----|----|----|----|----|----|----|----|
**************************************************|
[1] "Finding variable genes..."
Finding variable features for layer counts
Calculating gene variances
0%   10   20   30   40   50   60   70   80   90   100%
[----|----|----|----|----|----|----|----|----|----|
**************************************************|
Calculating feature variances of standardized and clipped values
0%   10   20   30   40   50   60   70   80   90   100%
[----|----|----|----|----|----|----|----|----|----|
**************************************************|
[1] "Scaling data..."
Centering and scaling data matrix

  |                                                                                                                                                                                                                     
  |                                                                                                                                                                                                               |   0%
  |                                                                                                                                                                                                                     
  |========================================================================================================                                                                                                       |  50%
  |                                                                                                                                                                                                                     
  |===============================================================================================================================================================================================================| 100%
[1] "Running PCA..."
[1] "Calculating PC distance matrix..."
[1] "Defining neighborhoods..."
[1] "Computing pANN across all pK..."
[1] "pK = 0.005..."
[1] "pK = 0.01..."
[1] "pK = 0.02..."
[1] "pK = 0.03..."
[1] "pK = 0.04..."
[1] "pK = 0.05..."
[1] "pK = 0.06..."
[1] "pK = 0.07..."
[1] "pK = 0.08..."
[1] "pK = 0.09..."
[1] "pK = 0.1..."
[1] "pK = 0.11..."
[1] "pK = 0.12..."
[1] "pK = 0.13..."
[1] "pK = 0.14..."
[1] "pK = 0.15..."
[1] "pK = 0.16..."
[1] "pK = 0.17..."
[1] "pK = 0.18..."
[1] "pK = 0.19..."
[1] "pK = 0.2..."
[1] "pK = 0.21..."
[1] "pK = 0.22..."
[1] "pK = 0.23..."
[1] "pK = 0.24..."
[1] "pK = 0.25..."
[1] "pK = 0.26..."
[1] "pK = 0.27..."
[1] "pK = 0.28..."
[1] "pK = 0.29..."
[1] "pK = 0.3..."
[1] "Creating artificial doublets for pN = 10%"
[1] "Creating Seurat object..."
[1] "Normalizing Seurat object..."
Normalizing layer: counts
Performing log-normalization
0%   10   20   30   40   50   60   70   80   90   100%
[----|----|----|----|----|----|----|----|----|----|
**************************************************|
[1] "Finding variable genes..."
Finding variable features for layer counts
Calculating gene variances
0%   10   20   30   40   50   60   70   80   90   100%
[----|----|----|----|----|----|----|----|----|----|
**************************************************|
Calculating feature variances of standardized and clipped values
0%   10   20   30   40   50   60   70   80   90   100%
[----|----|----|----|----|----|----|----|----|----|
**************************************************|
[1] "Scaling data..."
Centering and scaling data matrix

  |                                                                                                                                                                                                                     
  |                                                                                                                                                                                                               |   0%
  |                                                                                                                                                                                                                     
  |========================================================================================================                                                                                                       |  50%
  |                                                                                                                                                                                                                     
  |===============================================================================================================================================================================================================| 100%
[1] "Running PCA..."
[1] "Calculating PC distance matrix..."
[1] "Defining neighborhoods..."
[1] "Computing pANN across all pK..."
[1] "pK = 0.005..."
[1] "pK = 0.01..."
[1] "pK = 0.02..."
[1] "pK = 0.03..."
[1] "pK = 0.04..."
[1] "pK = 0.05..."
[1] "pK = 0.06..."
[1] "pK = 0.07..."
[1] "pK = 0.08..."
[1] "pK = 0.09..."
[1] "pK = 0.1..."
[1] "pK = 0.11..."
[1] "pK = 0.12..."
[1] "pK = 0.13..."
[1] "pK = 0.14..."
[1] "pK = 0.15..."
[1] "pK = 0.16..."
[1] "pK = 0.17..."
[1] "pK = 0.18..."
[1] "pK = 0.19..."
[1] "pK = 0.2..."
[1] "pK = 0.21..."
[1] "pK = 0.22..."
[1] "pK = 0.23..."
[1] "pK = 0.24..."
[1] "pK = 0.25..."
[1] "pK = 0.26..."
[1] "pK = 0.27..."
[1] "pK = 0.28..."
[1] "pK = 0.29..."
[1] "pK = 0.3..."
[1] "Creating artificial doublets for pN = 15%"
[1] "Creating Seurat object..."
[1] "Normalizing Seurat object..."
Normalizing layer: counts
Performing log-normalization
0%   10   20   30   40   50   60   70   80   90   100%
[----|----|----|----|----|----|----|----|----|----|
**************************************************|
[1] "Finding variable genes..."
Finding variable features for layer counts
Calculating gene variances
0%   10   20   30   40   50   60   70   80   90   100%
[----|----|----|----|----|----|----|----|----|----|
**************************************************|
Calculating feature variances of standardized and clipped values
0%   10   20   30   40   50   60   70   80   90   100%
[----|----|----|----|----|----|----|----|----|----|
**************************************************|
[1] "Scaling data..."
Centering and scaling data matrix

  |                                                                                                                                                                                                                     
  |                                                                                                                                                                                                               |   0%
  |                                                                                                                                                                                                                     
  |========================================================================================================                                                                                                       |  50%
  |                                                                                                                                                                                                                     
  |===============================================================================================================================================================================================================| 100%
[1] "Running PCA..."
[1] "Calculating PC distance matrix..."
[1] "Defining neighborhoods..."
[1] "Computing pANN across all pK..."
[1] "pK = 0.005..."
[1] "pK = 0.01..."
[1] "pK = 0.02..."
[1] "pK = 0.03..."
[1] "pK = 0.04..."
[1] "pK = 0.05..."
[1] "pK = 0.06..."
[1] "pK = 0.07..."
[1] "pK = 0.08..."
[1] "pK = 0.09..."
[1] "pK = 0.1..."
[1] "pK = 0.11..."
[1] "pK = 0.12..."
[1] "pK = 0.13..."
[1] "pK = 0.14..."
[1] "pK = 0.15..."
[1] "pK = 0.16..."
[1] "pK = 0.17..."
[1] "pK = 0.18..."
[1] "pK = 0.19..."
[1] "pK = 0.2..."
[1] "pK = 0.21..."
[1] "pK = 0.22..."
[1] "pK = 0.23..."
[1] "pK = 0.24..."
[1] "pK = 0.25..."
[1] "pK = 0.26..."
[1] "pK = 0.27..."
[1] "pK = 0.28..."
[1] "pK = 0.29..."
[1] "pK = 0.3..."
[1] "Creating artificial doublets for pN = 20%"
[1] "Creating Seurat object..."
[1] "Normalizing Seurat object..."
Normalizing layer: counts
Performing log-normalization
0%   10   20   30   40   50   60   70   80   90   100%
[----|----|----|----|----|----|----|----|----|----|
**************************************************|
[1] "Finding variable genes..."
Finding variable features for layer counts
Calculating gene variances
0%   10   20   30   40   50   60   70   80   90   100%
[----|----|----|----|----|----|----|----|----|----|
**************************************************|
Calculating feature variances of standardized and clipped values
0%   10   20   30   40   50   60   70   80   90   100%
[----|----|----|----|----|----|----|----|----|----|
**************************************************|
[1] "Scaling data..."
Centering and scaling data matrix

  |                                                                                                                                                                                                                     
  |                                                                                                                                                                                                               |   0%
  |                                                                                                                                                                                                                     
  |========================================================================================================                                                                                                       |  50%
  |                                                                                                                                                                                                                     
  |===============================================================================================================================================================================================================| 100%
[1] "Running PCA..."
[1] "Calculating PC distance matrix..."
[1] "Defining neighborhoods..."
[1] "Computing pANN across all pK..."
[1] "pK = 0.005..."
[1] "pK = 0.01..."
[1] "pK = 0.02..."
[1] "pK = 0.03..."
[1] "pK = 0.04..."
[1] "pK = 0.05..."
[1] "pK = 0.06..."
[1] "pK = 0.07..."
[1] "pK = 0.08..."
[1] "pK = 0.09..."
[1] "pK = 0.1..."
[1] "pK = 0.11..."
[1] "pK = 0.12..."
[1] "pK = 0.13..."
[1] "pK = 0.14..."
[1] "pK = 0.15..."
[1] "pK = 0.16..."
[1] "pK = 0.17..."
[1] "pK = 0.18..."
[1] "pK = 0.19..."
[1] "pK = 0.2..."
[1] "pK = 0.21..."
[1] "pK = 0.22..."
[1] "pK = 0.23..."
[1] "pK = 0.24..."
[1] "pK = 0.25..."
[1] "pK = 0.26..."
[1] "pK = 0.27..."
[1] "pK = 0.28..."
[1] "pK = 0.29..."
[1] "pK = 0.3..."
[1] "Creating artificial doublets for pN = 25%"
[1] "Creating Seurat object..."
[1] "Normalizing Seurat object..."
Normalizing layer: counts
Performing log-normalization
0%   10   20   30   40   50   60   70   80   90   100%
[----|----|----|----|----|----|----|----|----|----|
**************************************************|
[1] "Finding variable genes..."
Finding variable features for layer counts
Calculating gene variances
0%   10   20   30   40   50   60   70   80   90   100%
[----|----|----|----|----|----|----|----|----|----|
**************************************************|
Calculating feature variances of standardized and clipped values
0%   10   20   30   40   50   60   70   80   90   100%
[----|----|----|----|----|----|----|----|----|----|
**************************************************|
[1] "Scaling data..."
Centering and scaling data matrix

  |                                                                                                                                                                                                                     
  |                                                                                                                                                                                                               |   0%
  |                                                                                                                                                                                                                     
  |========================================================================================================                                                                                                       |  50%
  |                                                                                                                                                                                                                     
  |===============================================================================================================================================================================================================| 100%
[1] "Running PCA..."
[1] "Calculating PC distance matrix..."
[1] "Defining neighborhoods..."
[1] "Computing pANN across all pK..."
[1] "pK = 0.005..."
[1] "pK = 0.01..."
[1] "pK = 0.02..."
[1] "pK = 0.03..."
[1] "pK = 0.04..."
[1] "pK = 0.05..."
[1] "pK = 0.06..."
[1] "pK = 0.07..."
[1] "pK = 0.08..."
[1] "pK = 0.09..."
[1] "pK = 0.1..."
[1] "pK = 0.11..."
[1] "pK = 0.12..."
[1] "pK = 0.13..."
[1] "pK = 0.14..."
[1] "pK = 0.15..."
[1] "pK = 0.16..."
[1] "pK = 0.17..."
[1] "pK = 0.18..."
[1] "pK = 0.19..."
[1] "pK = 0.2..."
[1] "pK = 0.21..."
[1] "pK = 0.22..."
[1] "pK = 0.23..."
[1] "pK = 0.24..."
[1] "pK = 0.25..."
[1] "pK = 0.26..."
[1] "pK = 0.27..."
[1] "pK = 0.28..."
[1] "pK = 0.29..."
[1] "pK = 0.3..."
[1] "Creating artificial doublets for pN = 30%"
[1] "Creating Seurat object..."
[1] "Normalizing Seurat object..."
Normalizing layer: counts
Performing log-normalization
0%   10   20   30   40   50   60   70   80   90   100%
[----|----|----|----|----|----|----|----|----|----|
**************************************************|
[1] "Finding variable genes..."
Finding variable features for layer counts
Calculating gene variances
0%   10   20   30   40   50   60   70   80   90   100%
[----|----|----|----|----|----|----|----|----|----|
**************************************************|
Calculating feature variances of standardized and clipped values
0%   10   20   30   40   50   60   70   80   90   100%
[----|----|----|----|----|----|----|----|----|----|
**************************************************|
[1] "Scaling data..."
Centering and scaling data matrix

  |                                                                                                                                                                                                                     
  |                                                                                                                                                                                                               |   0%
  |                                                                                                                                                                                                                     
  |========================================================================================================                                                                                                       |  50%
  |                                                                                                                                                                                                                     
  |===============================================================================================================================================================================================================| 100%
[1] "Running PCA..."
[1] "Calculating PC distance matrix..."
[1] "Defining neighborhoods..."
[1] "Computing pANN across all pK..."
[1] "pK = 0.005..."
[1] "pK = 0.01..."
[1] "pK = 0.02..."
[1] "pK = 0.03..."
[1] "pK = 0.04..."
[1] "pK = 0.05..."
[1] "pK = 0.06..."
[1] "pK = 0.07..."
[1] "pK = 0.08..."
[1] "pK = 0.09..."
[1] "pK = 0.1..."
[1] "pK = 0.11..."
[1] "pK = 0.12..."
[1] "pK = 0.13..."
[1] "pK = 0.14..."
[1] "pK = 0.15..."
[1] "pK = 0.16..."
[1] "pK = 0.17..."
[1] "pK = 0.18..."
[1] "pK = 0.19..."
[1] "pK = 0.2..."
[1] "pK = 0.21..."
[1] "pK = 0.22..."
[1] "pK = 0.23..."
[1] "pK = 0.24..."
[1] "pK = 0.25..."
[1] "pK = 0.26..."
[1] "pK = 0.27..."
[1] "pK = 0.28..."
[1] "pK = 0.29..."
[1] "pK = 0.3..."

NULL
[1] "Selected pK: 0.01"
[1] "Creating 909 artificial doublets..."
[1] "Creating Seurat object..."
[1] "Normalizing Seurat object..."
Normalizing layer: counts
Performing log-normalization
0%   10   20   30   40   50   60   70   80   90   100%
[----|----|----|----|----|----|----|----|----|----|
**************************************************|
[1] "Finding variable genes..."
Finding variable features for layer counts
Calculating gene variances
0%   10   20   30   40   50   60   70   80   90   100%
[----|----|----|----|----|----|----|----|----|----|
**************************************************|
Calculating feature variances of standardized and clipped values
0%   10   20   30   40   50   60   70   80   90   100%
[----|----|----|----|----|----|----|----|----|----|
**************************************************|
[1] "Scaling data..."
Centering and scaling data matrix

  |                                                                                                                                                                                                                     
  |                                                                                                                                                                                                               |   0%
  |                                                                                                                                                                                                                     
  |========================================================================================================                                                                                                       |  50%
  |                                                                                                                                                                                                                     
  |===============================================================================================================================================================================================================| 100%
[1] "Running PCA..."
[1] "Calculating PC distance matrix..."
[1] "Computing pANN..."
[1] "Classifying doublets.."

Doublet Singlet 
    127    3508 
[1] "Processing sample: 5"
[1] 55357  1467
[1] "Creating artificial doublets for pN = 5%"
[1] "Creating Seurat object..."
[1] "Normalizing Seurat object..."
Normalizing layer: counts
Performing log-normalization
0%   10   20   30   40   50   60   70   80   90   100%
[----|----|----|----|----|----|----|----|----|----|
**************************************************|
[1] "Finding variable genes..."
Finding variable features for layer counts
Calculating gene variances
0%   10   20   30   40   50   60   70   80   90   100%
[----|----|----|----|----|----|----|----|----|----|
**************************************************|
Calculating feature variances of standardized and clipped values
0%   10   20   30   40   50   60   70   80   90   100%
[----|----|----|----|----|----|----|----|----|----|
**************************************************|
[1] "Scaling data..."
Centering and scaling data matrix

  |                                                                                                                                                                                                                     
  |                                                                                                                                                                                                               |   0%
  |                                                                                                                                                                                                                     
  |========================================================================================================                                                                                                       |  50%
  |                                                                                                                                                                                                                     
  |===============================================================================================================================================================================================================| 100%
[1] "Running PCA..."
[1] "Calculating PC distance matrix..."
[1] "Defining neighborhoods..."
[1] "Computing pANN across all pK..."
[1] "pK = 0.01..."
[1] "pK = 0.02..."
[1] "pK = 0.03..."
[1] "pK = 0.04..."
[1] "pK = 0.05..."
[1] "pK = 0.06..."
[1] "pK = 0.07..."
[1] "pK = 0.08..."
[1] "pK = 0.09..."
[1] "pK = 0.1..."
[1] "pK = 0.11..."
[1] "pK = 0.12..."
[1] "pK = 0.13..."
[1] "pK = 0.14..."
[1] "pK = 0.15..."
[1] "pK = 0.16..."
[1] "pK = 0.17..."
[1] "pK = 0.18..."
[1] "pK = 0.19..."
[1] "pK = 0.2..."
[1] "pK = 0.21..."
[1] "pK = 0.22..."
[1] "pK = 0.23..."
[1] "pK = 0.24..."
[1] "pK = 0.25..."
[1] "pK = 0.26..."
[1] "pK = 0.27..."
[1] "pK = 0.28..."
[1] "pK = 0.29..."
[1] "pK = 0.3..."
[1] "Creating artificial doublets for pN = 10%"
[1] "Creating Seurat object..."
[1] "Normalizing Seurat object..."
Normalizing layer: counts
Performing log-normalization
0%   10   20   30   40   50   60   70   80   90   100%
[----|----|----|----|----|----|----|----|----|----|
**************************************************|
[1] "Finding variable genes..."
Finding variable features for layer counts
Calculating gene variances
0%   10   20   30   40   50   60   70   80   90   100%
[----|----|----|----|----|----|----|----|----|----|
**************************************************|
Calculating feature variances of standardized and clipped values
0%   10   20   30   40   50   60   70   80   90   100%
[----|----|----|----|----|----|----|----|----|----|
**************************************************|
[1] "Scaling data..."
Centering and scaling data matrix

  |                                                                                                                                                                                                                     
  |                                                                                                                                                                                                               |   0%
  |                                                                                                                                                                                                                     
  |========================================================================================================                                                                                                       |  50%
  |                                                                                                                                                                                                                     
  |===============================================================================================================================================================================================================| 100%
[1] "Running PCA..."
[1] "Calculating PC distance matrix..."
[1] "Defining neighborhoods..."
[1] "Computing pANN across all pK..."
[1] "pK = 0.01..."
[1] "pK = 0.02..."
[1] "pK = 0.03..."
[1] "pK = 0.04..."
[1] "pK = 0.05..."
[1] "pK = 0.06..."
[1] "pK = 0.07..."
[1] "pK = 0.08..."
[1] "pK = 0.09..."
[1] "pK = 0.1..."
[1] "pK = 0.11..."
[1] "pK = 0.12..."
[1] "pK = 0.13..."
[1] "pK = 0.14..."
[1] "pK = 0.15..."
[1] "pK = 0.16..."
[1] "pK = 0.17..."
[1] "pK = 0.18..."
[1] "pK = 0.19..."
[1] "pK = 0.2..."
[1] "pK = 0.21..."
[1] "pK = 0.22..."
[1] "pK = 0.23..."
[1] "pK = 0.24..."
[1] "pK = 0.25..."
[1] "pK = 0.26..."
[1] "pK = 0.27..."
[1] "pK = 0.28..."
[1] "pK = 0.29..."
[1] "pK = 0.3..."
[1] "Creating artificial doublets for pN = 15%"
[1] "Creating Seurat object..."
[1] "Normalizing Seurat object..."
Normalizing layer: counts
Performing log-normalization
0%   10   20   30   40   50   60   70   80   90   100%
[----|----|----|----|----|----|----|----|----|----|
**************************************************|
[1] "Finding variable genes..."
Finding variable features for layer counts
Calculating gene variances
0%   10   20   30   40   50   60   70   80   90   100%
[----|----|----|----|----|----|----|----|----|----|
**************************************************|
Calculating feature variances of standardized and clipped values
0%   10   20   30   40   50   60   70   80   90   100%
[----|----|----|----|----|----|----|----|----|----|
**************************************************|
[1] "Scaling data..."
Centering and scaling data matrix

  |                                                                                                                                                                                                                     
  |                                                                                                                                                                                                               |   0%
  |                                                                                                                                                                                                                     
  |========================================================================================================                                                                                                       |  50%
  |                                                                                                                                                                                                                     
  |===============================================================================================================================================================================================================| 100%
[1] "Running PCA..."
[1] "Calculating PC distance matrix..."
[1] "Defining neighborhoods..."
[1] "Computing pANN across all pK..."
[1] "pK = 0.01..."
[1] "pK = 0.02..."
[1] "pK = 0.03..."
[1] "pK = 0.04..."
[1] "pK = 0.05..."
[1] "pK = 0.06..."
[1] "pK = 0.07..."
[1] "pK = 0.08..."
[1] "pK = 0.09..."
[1] "pK = 0.1..."
[1] "pK = 0.11..."
[1] "pK = 0.12..."
[1] "pK = 0.13..."
[1] "pK = 0.14..."
[1] "pK = 0.15..."
[1] "pK = 0.16..."
[1] "pK = 0.17..."
[1] "pK = 0.18..."
[1] "pK = 0.19..."
[1] "pK = 0.2..."
[1] "pK = 0.21..."
[1] "pK = 0.22..."
[1] "pK = 0.23..."
[1] "pK = 0.24..."
[1] "pK = 0.25..."
[1] "pK = 0.26..."
[1] "pK = 0.27..."
[1] "pK = 0.28..."
[1] "pK = 0.29..."
[1] "pK = 0.3..."
[1] "Creating artificial doublets for pN = 20%"
[1] "Creating Seurat object..."
[1] "Normalizing Seurat object..."
Normalizing layer: counts
Performing log-normalization
0%   10   20   30   40   50   60   70   80   90   100%
[----|----|----|----|----|----|----|----|----|----|
**************************************************|
[1] "Finding variable genes..."
Finding variable features for layer counts
Calculating gene variances
0%   10   20   30   40   50   60   70   80   90   100%
[----|----|----|----|----|----|----|----|----|----|
**************************************************|
Calculating feature variances of standardized and clipped values
0%   10   20   30   40   50   60   70   80   90   100%
[----|----|----|----|----|----|----|----|----|----|
**************************************************|
[1] "Scaling data..."
Centering and scaling data matrix

  |                                                                                                                                                                                                                     
  |                                                                                                                                                                                                               |   0%
  |                                                                                                                                                                                                                     
  |========================================================================================================                                                                                                       |  50%
  |                                                                                                                                                                                                                     
  |===============================================================================================================================================================================================================| 100%
[1] "Running PCA..."
[1] "Calculating PC distance matrix..."
[1] "Defining neighborhoods..."
[1] "Computing pANN across all pK..."
[1] "pK = 0.01..."
[1] "pK = 0.02..."
[1] "pK = 0.03..."
[1] "pK = 0.04..."
[1] "pK = 0.05..."
[1] "pK = 0.06..."
[1] "pK = 0.07..."
[1] "pK = 0.08..."
[1] "pK = 0.09..."
[1] "pK = 0.1..."
[1] "pK = 0.11..."
[1] "pK = 0.12..."
[1] "pK = 0.13..."
[1] "pK = 0.14..."
[1] "pK = 0.15..."
[1] "pK = 0.16..."
[1] "pK = 0.17..."
[1] "pK = 0.18..."
[1] "pK = 0.19..."
[1] "pK = 0.2..."
[1] "pK = 0.21..."
[1] "pK = 0.22..."
[1] "pK = 0.23..."
[1] "pK = 0.24..."
[1] "pK = 0.25..."
[1] "pK = 0.26..."
[1] "pK = 0.27..."
[1] "pK = 0.28..."
[1] "pK = 0.29..."
[1] "pK = 0.3..."
[1] "Creating artificial doublets for pN = 25%"
[1] "Creating Seurat object..."
[1] "Normalizing Seurat object..."
Normalizing layer: counts
Performing log-normalization
0%   10   20   30   40   50   60   70   80   90   100%
[----|----|----|----|----|----|----|----|----|----|
**************************************************|
[1] "Finding variable genes..."
Finding variable features for layer counts
Calculating gene variances
0%   10   20   30   40   50   60   70   80   90   100%
[----|----|----|----|----|----|----|----|----|----|
**************************************************|
Calculating feature variances of standardized and clipped values
0%   10   20   30   40   50   60   70   80   90   100%
[----|----|----|----|----|----|----|----|----|----|
**************************************************|
[1] "Scaling data..."
Centering and scaling data matrix

  |                                                                                                                                                                                                                     
  |                                                                                                                                                                                                               |   0%
  |                                                                                                                                                                                                                     
  |========================================================================================================                                                                                                       |  50%
  |                                                                                                                                                                                                                     
  |===============================================================================================================================================================================================================| 100%
[1] "Running PCA..."
[1] "Calculating PC distance matrix..."
[1] "Defining neighborhoods..."
[1] "Computing pANN across all pK..."
[1] "pK = 0.01..."
[1] "pK = 0.02..."
[1] "pK = 0.03..."
[1] "pK = 0.04..."
[1] "pK = 0.05..."
[1] "pK = 0.06..."
[1] "pK = 0.07..."
[1] "pK = 0.08..."
[1] "pK = 0.09..."
[1] "pK = 0.1..."
[1] "pK = 0.11..."
[1] "pK = 0.12..."
[1] "pK = 0.13..."
[1] "pK = 0.14..."
[1] "pK = 0.15..."
[1] "pK = 0.16..."
[1] "pK = 0.17..."
[1] "pK = 0.18..."
[1] "pK = 0.19..."
[1] "pK = 0.2..."
[1] "pK = 0.21..."
[1] "pK = 0.22..."
[1] "pK = 0.23..."
[1] "pK = 0.24..."
[1] "pK = 0.25..."
[1] "pK = 0.26..."
[1] "pK = 0.27..."
[1] "pK = 0.28..."
[1] "pK = 0.29..."
[1] "pK = 0.3..."
[1] "Creating artificial doublets for pN = 30%"
[1] "Creating Seurat object..."
[1] "Normalizing Seurat object..."
Normalizing layer: counts
Performing log-normalization
0%   10   20   30   40   50   60   70   80   90   100%
[----|----|----|----|----|----|----|----|----|----|
**************************************************|
[1] "Finding variable genes..."
Finding variable features for layer counts
Calculating gene variances
0%   10   20   30   40   50   60   70   80   90   100%
[----|----|----|----|----|----|----|----|----|----|
**************************************************|
Calculating feature variances of standardized and clipped values
0%   10   20   30   40   50   60   70   80   90   100%
[----|----|----|----|----|----|----|----|----|----|
**************************************************|
[1] "Scaling data..."
Centering and scaling data matrix

  |                                                                                                                                                                                                                     
  |                                                                                                                                                                                                               |   0%
  |                                                                                                                                                                                                                     
  |========================================================================================================                                                                                                       |  50%
  |                                                                                                                                                                                                                     
  |===============================================================================================================================================================================================================| 100%
[1] "Running PCA..."
[1] "Calculating PC distance matrix..."
[1] "Defining neighborhoods..."
[1] "Computing pANN across all pK..."
[1] "pK = 0.01..."
[1] "pK = 0.02..."
[1] "pK = 0.03..."
[1] "pK = 0.04..."
[1] "pK = 0.05..."
[1] "pK = 0.06..."
[1] "pK = 0.07..."
[1] "pK = 0.08..."
[1] "pK = 0.09..."
[1] "pK = 0.1..."
[1] "pK = 0.11..."
[1] "pK = 0.12..."
[1] "pK = 0.13..."
[1] "pK = 0.14..."
[1] "pK = 0.15..."
[1] "pK = 0.16..."
[1] "pK = 0.17..."
[1] "pK = 0.18..."
[1] "pK = 0.19..."
[1] "pK = 0.2..."
[1] "pK = 0.21..."
[1] "pK = 0.22..."
[1] "pK = 0.23..."
[1] "pK = 0.24..."
[1] "pK = 0.25..."
[1] "pK = 0.26..."
[1] "pK = 0.27..."
[1] "pK = 0.28..."
[1] "pK = 0.29..."
[1] "pK = 0.3..."

NULL
[1] "Selected pK: 0.02"
[1] "Creating 367 artificial doublets..."
[1] "Creating Seurat object..."
[1] "Normalizing Seurat object..."
Normalizing layer: counts
Performing log-normalization
0%   10   20   30   40   50   60   70   80   90   100%
[----|----|----|----|----|----|----|----|----|----|
**************************************************|
[1] "Finding variable genes..."
Finding variable features for layer counts
Calculating gene variances
0%   10   20   30   40   50   60   70   80   90   100%
[----|----|----|----|----|----|----|----|----|----|
**************************************************|
Calculating feature variances of standardized and clipped values
0%   10   20   30   40   50   60   70   80   90   100%
[----|----|----|----|----|----|----|----|----|----|
**************************************************|
[1] "Scaling data..."
Centering and scaling data matrix

  |                                                                                                                                                                                                                     
  |                                                                                                                                                                                                               |   0%
  |                                                                                                                                                                                                                     
  |========================================================================================================                                                                                                       |  50%
  |                                                                                                                                                                                                                     
  |===============================================================================================================================================================================================================| 100%
[1] "Running PCA..."
[1] "Calculating PC distance matrix..."
[1] "Computing pANN..."
[1] "Classifying doublets.."

Doublet Singlet 
     51    1416 
[1] "Processing sample: 6"
[1] 55357  3328
[1] "Creating artificial doublets for pN = 5%"
[1] "Creating Seurat object..."
[1] "Normalizing Seurat object..."
Normalizing layer: counts
Performing log-normalization
0%   10   20   30   40   50   60   70   80   90   100%
[----|----|----|----|----|----|----|----|----|----|
**************************************************|
[1] "Finding variable genes..."
Finding variable features for layer counts
Calculating gene variances
0%   10   20   30   40   50   60   70   80   90   100%
[----|----|----|----|----|----|----|----|----|----|
**************************************************|
Calculating feature variances of standardized and clipped values
0%   10   20   30   40   50   60   70   80   90   100%
[----|----|----|----|----|----|----|----|----|----|
**************************************************|
[1] "Scaling data..."
Centering and scaling data matrix

  |                                                                                                                                                                                                                     
  |                                                                                                                                                                                                               |   0%
  |                                                                                                                                                                                                                     
  |========================================================================================================                                                                                                       |  50%
  |                                                                                                                                                                                                                     
  |===============================================================================================================================================================================================================| 100%
[1] "Running PCA..."
[1] "Calculating PC distance matrix..."
[1] "Defining neighborhoods..."
[1] "Computing pANN across all pK..."
[1] "pK = 0.005..."
[1] "pK = 0.01..."
[1] "pK = 0.02..."
[1] "pK = 0.03..."
[1] "pK = 0.04..."
[1] "pK = 0.05..."
[1] "pK = 0.06..."
[1] "pK = 0.07..."
[1] "pK = 0.08..."
[1] "pK = 0.09..."
[1] "pK = 0.1..."
[1] "pK = 0.11..."
[1] "pK = 0.12..."
[1] "pK = 0.13..."
[1] "pK = 0.14..."
[1] "pK = 0.15..."
[1] "pK = 0.16..."
[1] "pK = 0.17..."
[1] "pK = 0.18..."
[1] "pK = 0.19..."
[1] "pK = 0.2..."
[1] "pK = 0.21..."
[1] "pK = 0.22..."
[1] "pK = 0.23..."
[1] "pK = 0.24..."
[1] "pK = 0.25..."
[1] "pK = 0.26..."
[1] "pK = 0.27..."
[1] "pK = 0.28..."
[1] "pK = 0.29..."
[1] "pK = 0.3..."
[1] "Creating artificial doublets for pN = 10%"
[1] "Creating Seurat object..."
[1] "Normalizing Seurat object..."
Normalizing layer: counts
Performing log-normalization
0%   10   20   30   40   50   60   70   80   90   100%
[----|----|----|----|----|----|----|----|----|----|
**************************************************|
[1] "Finding variable genes..."
Finding variable features for layer counts
Calculating gene variances
0%   10   20   30   40   50   60   70   80   90   100%
[----|----|----|----|----|----|----|----|----|----|
**************************************************|
Calculating feature variances of standardized and clipped values
0%   10   20   30   40   50   60   70   80   90   100%
[----|----|----|----|----|----|----|----|----|----|
**************************************************|
[1] "Scaling data..."
Centering and scaling data matrix

  |                                                                                                                                                                                                                     
  |                                                                                                                                                                                                               |   0%
  |                                                                                                                                                                                                                     
  |========================================================================================================                                                                                                       |  50%
  |                                                                                                                                                                                                                     
  |===============================================================================================================================================================================================================| 100%
[1] "Running PCA..."
[1] "Calculating PC distance matrix..."
[1] "Defining neighborhoods..."
[1] "Computing pANN across all pK..."
[1] "pK = 0.005..."
[1] "pK = 0.01..."
[1] "pK = 0.02..."
[1] "pK = 0.03..."
[1] "pK = 0.04..."
[1] "pK = 0.05..."
[1] "pK = 0.06..."
[1] "pK = 0.07..."
[1] "pK = 0.08..."
[1] "pK = 0.09..."
[1] "pK = 0.1..."
[1] "pK = 0.11..."
[1] "pK = 0.12..."
[1] "pK = 0.13..."
[1] "pK = 0.14..."
[1] "pK = 0.15..."
[1] "pK = 0.16..."
[1] "pK = 0.17..."
[1] "pK = 0.18..."
[1] "pK = 0.19..."
[1] "pK = 0.2..."
[1] "pK = 0.21..."
[1] "pK = 0.22..."
[1] "pK = 0.23..."
[1] "pK = 0.24..."
[1] "pK = 0.25..."
[1] "pK = 0.26..."
[1] "pK = 0.27..."
[1] "pK = 0.28..."
[1] "pK = 0.29..."
[1] "pK = 0.3..."
[1] "Creating artificial doublets for pN = 15%"
[1] "Creating Seurat object..."
[1] "Normalizing Seurat object..."
Normalizing layer: counts
Performing log-normalization
0%   10   20   30   40   50   60   70   80   90   100%
[----|----|----|----|----|----|----|----|----|----|
**************************************************|
[1] "Finding variable genes..."
Finding variable features for layer counts
Calculating gene variances
0%   10   20   30   40   50   60   70   80   90   100%
[----|----|----|----|----|----|----|----|----|----|
**************************************************|
Calculating feature variances of standardized and clipped values
0%   10   20   30   40   50   60   70   80   90   100%
[----|----|----|----|----|----|----|----|----|----|
**************************************************|
[1] "Scaling data..."
Centering and scaling data matrix

  |                                                                                                                                                                                                                     
  |                                                                                                                                                                                                               |   0%
  |                                                                                                                                                                                                                     
  |========================================================================================================                                                                                                       |  50%
  |                                                                                                                                                                                                                     
  |===============================================================================================================================================================================================================| 100%
[1] "Running PCA..."
[1] "Calculating PC distance matrix..."
[1] "Defining neighborhoods..."
[1] "Computing pANN across all pK..."
[1] "pK = 0.005..."
[1] "pK = 0.01..."
[1] "pK = 0.02..."
[1] "pK = 0.03..."
[1] "pK = 0.04..."
[1] "pK = 0.05..."
[1] "pK = 0.06..."
[1] "pK = 0.07..."
[1] "pK = 0.08..."
[1] "pK = 0.09..."
[1] "pK = 0.1..."
[1] "pK = 0.11..."
[1] "pK = 0.12..."
[1] "pK = 0.13..."
[1] "pK = 0.14..."
[1] "pK = 0.15..."
[1] "pK = 0.16..."
[1] "pK = 0.17..."
[1] "pK = 0.18..."
[1] "pK = 0.19..."
[1] "pK = 0.2..."
[1] "pK = 0.21..."
[1] "pK = 0.22..."
[1] "pK = 0.23..."
[1] "pK = 0.24..."
[1] "pK = 0.25..."
[1] "pK = 0.26..."
[1] "pK = 0.27..."
[1] "pK = 0.28..."
[1] "pK = 0.29..."
[1] "pK = 0.3..."
[1] "Creating artificial doublets for pN = 20%"
[1] "Creating Seurat object..."
[1] "Normalizing Seurat object..."
Normalizing layer: counts
Performing log-normalization
0%   10   20   30   40   50   60   70   80   90   100%
[----|----|----|----|----|----|----|----|----|----|
**************************************************|
[1] "Finding variable genes..."
Finding variable features for layer counts
Calculating gene variances
0%   10   20   30   40   50   60   70   80   90   100%
[----|----|----|----|----|----|----|----|----|----|
**************************************************|
Calculating feature variances of standardized and clipped values
0%   10   20   30   40   50   60   70   80   90   100%
[----|----|----|----|----|----|----|----|----|----|
**************************************************|
[1] "Scaling data..."
Centering and scaling data matrix

  |                                                                                                                                                                                                                     
  |                                                                                                                                                                                                               |   0%
  |                                                                                                                                                                                                                     
  |========================================================================================================                                                                                                       |  50%
  |                                                                                                                                                                                                                     
  |===============================================================================================================================================================================================================| 100%
[1] "Running PCA..."
[1] "Calculating PC distance matrix..."
[1] "Defining neighborhoods..."
[1] "Computing pANN across all pK..."
[1] "pK = 0.005..."
[1] "pK = 0.01..."
[1] "pK = 0.02..."
[1] "pK = 0.03..."
[1] "pK = 0.04..."
[1] "pK = 0.05..."
[1] "pK = 0.06..."
[1] "pK = 0.07..."
[1] "pK = 0.08..."
[1] "pK = 0.09..."
[1] "pK = 0.1..."
[1] "pK = 0.11..."
[1] "pK = 0.12..."
[1] "pK = 0.13..."
[1] "pK = 0.14..."
[1] "pK = 0.15..."
[1] "pK = 0.16..."
[1] "pK = 0.17..."
[1] "pK = 0.18..."
[1] "pK = 0.19..."
[1] "pK = 0.2..."
[1] "pK = 0.21..."
[1] "pK = 0.22..."
[1] "pK = 0.23..."
[1] "pK = 0.24..."
[1] "pK = 0.25..."
[1] "pK = 0.26..."
[1] "pK = 0.27..."
[1] "pK = 0.28..."
[1] "pK = 0.29..."
[1] "pK = 0.3..."
[1] "Creating artificial doublets for pN = 25%"
[1] "Creating Seurat object..."
[1] "Normalizing Seurat object..."
Normalizing layer: counts
Performing log-normalization
0%   10   20   30   40   50   60   70   80   90   100%
[----|----|----|----|----|----|----|----|----|----|
**************************************************|
[1] "Finding variable genes..."
Finding variable features for layer counts
Calculating gene variances
0%   10   20   30   40   50   60   70   80   90   100%
[----|----|----|----|----|----|----|----|----|----|
**************************************************|
Calculating feature variances of standardized and clipped values
0%   10   20   30   40   50   60   70   80   90   100%
[----|----|----|----|----|----|----|----|----|----|
**************************************************|
[1] "Scaling data..."
Centering and scaling data matrix

  |                                                                                                                                                                                                                     
  |                                                                                                                                                                                                               |   0%
  |                                                                                                                                                                                                                     
  |========================================================================================================                                                                                                       |  50%
  |                                                                                                                                                                                                                     
  |===============================================================================================================================================================================================================| 100%
[1] "Running PCA..."
[1] "Calculating PC distance matrix..."
[1] "Defining neighborhoods..."
[1] "Computing pANN across all pK..."
[1] "pK = 0.005..."
[1] "pK = 0.01..."
[1] "pK = 0.02..."
[1] "pK = 0.03..."
[1] "pK = 0.04..."
[1] "pK = 0.05..."
[1] "pK = 0.06..."
[1] "pK = 0.07..."
[1] "pK = 0.08..."
[1] "pK = 0.09..."
[1] "pK = 0.1..."
[1] "pK = 0.11..."
[1] "pK = 0.12..."
[1] "pK = 0.13..."
[1] "pK = 0.14..."
[1] "pK = 0.15..."
[1] "pK = 0.16..."
[1] "pK = 0.17..."
[1] "pK = 0.18..."
[1] "pK = 0.19..."
[1] "pK = 0.2..."
[1] "pK = 0.21..."
[1] "pK = 0.22..."
[1] "pK = 0.23..."
[1] "pK = 0.24..."
[1] "pK = 0.25..."
[1] "pK = 0.26..."
[1] "pK = 0.27..."
[1] "pK = 0.28..."
[1] "pK = 0.29..."
[1] "pK = 0.3..."
[1] "Creating artificial doublets for pN = 30%"
[1] "Creating Seurat object..."
[1] "Normalizing Seurat object..."
Normalizing layer: counts
Performing log-normalization
0%   10   20   30   40   50   60   70   80   90   100%
[----|----|----|----|----|----|----|----|----|----|
**************************************************|
[1] "Finding variable genes..."
Finding variable features for layer counts
Calculating gene variances
0%   10   20   30   40   50   60   70   80   90   100%
[----|----|----|----|----|----|----|----|----|----|
**************************************************|
Calculating feature variances of standardized and clipped values
0%   10   20   30   40   50   60   70   80   90   100%
[----|----|----|----|----|----|----|----|----|----|
**************************************************|
[1] "Scaling data..."
Centering and scaling data matrix

  |                                                                                                                                                                                                                     
  |                                                                                                                                                                                                               |   0%
  |                                                                                                                                                                                                                     
  |========================================================================================================                                                                                                       |  50%
  |                                                                                                                                                                                                                     
  |===============================================================================================================================================================================================================| 100%
[1] "Running PCA..."
[1] "Calculating PC distance matrix..."
[1] "Defining neighborhoods..."
[1] "Computing pANN across all pK..."
[1] "pK = 0.005..."
[1] "pK = 0.01..."
[1] "pK = 0.02..."
[1] "pK = 0.03..."
[1] "pK = 0.04..."
[1] "pK = 0.05..."
[1] "pK = 0.06..."
[1] "pK = 0.07..."
[1] "pK = 0.08..."
[1] "pK = 0.09..."
[1] "pK = 0.1..."
[1] "pK = 0.11..."
[1] "pK = 0.12..."
[1] "pK = 0.13..."
[1] "pK = 0.14..."
[1] "pK = 0.15..."
[1] "pK = 0.16..."
[1] "pK = 0.17..."
[1] "pK = 0.18..."
[1] "pK = 0.19..."
[1] "pK = 0.2..."
[1] "pK = 0.21..."
[1] "pK = 0.22..."
[1] "pK = 0.23..."
[1] "pK = 0.24..."
[1] "pK = 0.25..."
[1] "pK = 0.26..."
[1] "pK = 0.27..."
[1] "pK = 0.28..."
[1] "pK = 0.29..."
[1] "pK = 0.3..."

NULL
[1] "Selected pK: 0.01"
[1] "Creating 832 artificial doublets..."
[1] "Creating Seurat object..."
[1] "Normalizing Seurat object..."
Normalizing layer: counts
Performing log-normalization
0%   10   20   30   40   50   60   70   80   90   100%
[----|----|----|----|----|----|----|----|----|----|
**************************************************|
[1] "Finding variable genes..."
Finding variable features for layer counts
Calculating gene variances
0%   10   20   30   40   50   60   70   80   90   100%
[----|----|----|----|----|----|----|----|----|----|
**************************************************|
Calculating feature variances of standardized and clipped values
0%   10   20   30   40   50   60   70   80   90   100%
[----|----|----|----|----|----|----|----|----|----|
**************************************************|
[1] "Scaling data..."
Centering and scaling data matrix

  |                                                                                                                                                                                                                     
  |                                                                                                                                                                                                               |   0%
  |                                                                                                                                                                                                                     
  |========================================================================================================                                                                                                       |  50%
  |                                                                                                                                                                                                                     
  |===============================================================================================================================================================================================================| 100%
[1] "Running PCA..."
[1] "Calculating PC distance matrix..."
[1] "Computing pANN..."
[1] "Classifying doublets.."

Doublet Singlet 
    116    3212 
[1] "Processing sample: 7"
[1] 55357  5511
[1] "Creating artificial doublets for pN = 5%"
[1] "Creating Seurat object..."
[1] "Normalizing Seurat object..."
Normalizing layer: counts
Performing log-normalization
0%   10   20   30   40   50   60   70   80   90   100%
[----|----|----|----|----|----|----|----|----|----|
**************************************************|
[1] "Finding variable genes..."
Finding variable features for layer counts
Calculating gene variances
0%   10   20   30   40   50   60   70   80   90   100%
[----|----|----|----|----|----|----|----|----|----|
**************************************************|
Calculating feature variances of standardized and clipped values
0%   10   20   30   40   50   60   70   80   90   100%
[----|----|----|----|----|----|----|----|----|----|
**************************************************|
[1] "Scaling data..."
Centering and scaling data matrix

  |                                                                                                                                                                                                                     
  |                                                                                                                                                                                                               |   0%
  |                                                                                                                                                                                                                     
  |========================================================================================================                                                                                                       |  50%
  |                                                                                                                                                                                                                     
  |===============================================================================================================================================================================================================| 100%
[1] "Running PCA..."
[1] "Calculating PC distance matrix..."
[1] "Defining neighborhoods..."
[1] "Computing pANN across all pK..."
[1] "pK = 0.005..."
[1] "pK = 0.01..."
[1] "pK = 0.02..."
[1] "pK = 0.03..."
[1] "pK = 0.04..."
[1] "pK = 0.05..."
[1] "pK = 0.06..."
[1] "pK = 0.07..."
[1] "pK = 0.08..."
[1] "pK = 0.09..."
[1] "pK = 0.1..."
[1] "pK = 0.11..."
[1] "pK = 0.12..."
[1] "pK = 0.13..."
[1] "pK = 0.14..."
[1] "pK = 0.15..."
[1] "pK = 0.16..."
[1] "pK = 0.17..."
[1] "pK = 0.18..."
[1] "pK = 0.19..."
[1] "pK = 0.2..."
[1] "pK = 0.21..."
[1] "pK = 0.22..."
[1] "pK = 0.23..."
[1] "pK = 0.24..."
[1] "pK = 0.25..."
[1] "pK = 0.26..."
[1] "pK = 0.27..."
[1] "pK = 0.28..."
[1] "pK = 0.29..."
[1] "pK = 0.3..."
[1] "Creating artificial doublets for pN = 10%"
[1] "Creating Seurat object..."
[1] "Normalizing Seurat object..."
Normalizing layer: counts
Performing log-normalization
0%   10   20   30   40   50   60   70   80   90   100%
[----|----|----|----|----|----|----|----|----|----|
**************************************************|
[1] "Finding variable genes..."
Finding variable features for layer counts
Calculating gene variances
0%   10   20   30   40   50   60   70   80   90   100%
[----|----|----|----|----|----|----|----|----|----|
**************************************************|
Calculating feature variances of standardized and clipped values
0%   10   20   30   40   50   60   70   80   90   100%
[----|----|----|----|----|----|----|----|----|----|
**************************************************|
[1] "Scaling data..."
Centering and scaling data matrix

  |                                                                                                                                                                                                                     
  |                                                                                                                                                                                                               |   0%
  |                                                                                                                                                                                                                     
  |========================================================================================================                                                                                                       |  50%
  |                                                                                                                                                                                                                     
  |===============================================================================================================================================================================================================| 100%
[1] "Running PCA..."
[1] "Calculating PC distance matrix..."
[1] "Defining neighborhoods..."
[1] "Computing pANN across all pK..."
[1] "pK = 0.005..."
[1] "pK = 0.01..."
[1] "pK = 0.02..."
[1] "pK = 0.03..."
[1] "pK = 0.04..."
[1] "pK = 0.05..."
[1] "pK = 0.06..."
[1] "pK = 0.07..."
[1] "pK = 0.08..."
[1] "pK = 0.09..."
[1] "pK = 0.1..."
[1] "pK = 0.11..."
[1] "pK = 0.12..."
[1] "pK = 0.13..."
[1] "pK = 0.14..."
[1] "pK = 0.15..."
[1] "pK = 0.16..."
[1] "pK = 0.17..."
[1] "pK = 0.18..."
[1] "pK = 0.19..."
[1] "pK = 0.2..."
[1] "pK = 0.21..."
[1] "pK = 0.22..."
[1] "pK = 0.23..."
[1] "pK = 0.24..."
[1] "pK = 0.25..."
[1] "pK = 0.26..."
[1] "pK = 0.27..."
[1] "pK = 0.28..."
[1] "pK = 0.29..."
[1] "pK = 0.3..."
[1] "Creating artificial doublets for pN = 15%"
[1] "Creating Seurat object..."
[1] "Normalizing Seurat object..."
Normalizing layer: counts
Performing log-normalization
0%   10   20   30   40   50   60   70   80   90   100%
[----|----|----|----|----|----|----|----|----|----|
**************************************************|
[1] "Finding variable genes..."
Finding variable features for layer counts
Calculating gene variances
0%   10   20   30   40   50   60   70   80   90   100%
[----|----|----|----|----|----|----|----|----|----|
**************************************************|
Calculating feature variances of standardized and clipped values
0%   10   20   30   40   50   60   70   80   90   100%
[----|----|----|----|----|----|----|----|----|----|
**************************************************|
[1] "Scaling data..."
Centering and scaling data matrix

  |                                                                                                                                                                                                                     
  |                                                                                                                                                                                                               |   0%
  |                                                                                                                                                                                                                     
  |========================================================================================================                                                                                                       |  50%
  |                                                                                                                                                                                                                     
  |===============================================================================================================================================================================================================| 100%
[1] "Running PCA..."
[1] "Calculating PC distance matrix..."
[1] "Defining neighborhoods..."
[1] "Computing pANN across all pK..."
[1] "pK = 0.005..."
[1] "pK = 0.01..."
[1] "pK = 0.02..."
[1] "pK = 0.03..."
[1] "pK = 0.04..."
[1] "pK = 0.05..."
[1] "pK = 0.06..."
[1] "pK = 0.07..."
[1] "pK = 0.08..."
[1] "pK = 0.09..."
[1] "pK = 0.1..."
[1] "pK = 0.11..."
[1] "pK = 0.12..."
[1] "pK = 0.13..."
[1] "pK = 0.14..."
[1] "pK = 0.15..."
[1] "pK = 0.16..."
[1] "pK = 0.17..."
[1] "pK = 0.18..."
[1] "pK = 0.19..."
[1] "pK = 0.2..."
[1] "pK = 0.21..."
[1] "pK = 0.22..."
[1] "pK = 0.23..."
[1] "pK = 0.24..."
[1] "pK = 0.25..."
[1] "pK = 0.26..."
[1] "pK = 0.27..."
[1] "pK = 0.28..."
[1] "pK = 0.29..."
[1] "pK = 0.3..."
[1] "Creating artificial doublets for pN = 20%"
[1] "Creating Seurat object..."
[1] "Normalizing Seurat object..."
Normalizing layer: counts
Performing log-normalization
0%   10   20   30   40   50   60   70   80   90   100%
[----|----|----|----|----|----|----|----|----|----|
**************************************************|
[1] "Finding variable genes..."
Finding variable features for layer counts
Calculating gene variances
0%   10   20   30   40   50   60   70   80   90   100%
[----|----|----|----|----|----|----|----|----|----|
**************************************************|
Calculating feature variances of standardized and clipped values
0%   10   20   30   40   50   60   70   80   90   100%
[----|----|----|----|----|----|----|----|----|----|
**************************************************|
[1] "Scaling data..."
Centering and scaling data matrix

  |                                                                                                                                                                                                                     
  |                                                                                                                                                                                                               |   0%
  |                                                                                                                                                                                                                     
  |========================================================================================================                                                                                                       |  50%
  |                                                                                                                                                                                                                     
  |===============================================================================================================================================================================================================| 100%
[1] "Running PCA..."
[1] "Calculating PC distance matrix..."
[1] "Defining neighborhoods..."
[1] "Computing pANN across all pK..."
[1] "pK = 0.005..."
[1] "pK = 0.01..."
[1] "pK = 0.02..."
[1] "pK = 0.03..."
[1] "pK = 0.04..."
[1] "pK = 0.05..."
[1] "pK = 0.06..."
[1] "pK = 0.07..."
[1] "pK = 0.08..."
[1] "pK = 0.09..."
[1] "pK = 0.1..."
[1] "pK = 0.11..."
[1] "pK = 0.12..."
[1] "pK = 0.13..."
[1] "pK = 0.14..."
[1] "pK = 0.15..."
[1] "pK = 0.16..."
[1] "pK = 0.17..."
[1] "pK = 0.18..."
[1] "pK = 0.19..."
[1] "pK = 0.2..."
[1] "pK = 0.21..."
[1] "pK = 0.22..."
[1] "pK = 0.23..."
[1] "pK = 0.24..."
[1] "pK = 0.25..."
[1] "pK = 0.26..."
[1] "pK = 0.27..."
[1] "pK = 0.28..."
[1] "pK = 0.29..."
[1] "pK = 0.3..."
[1] "Creating artificial doublets for pN = 25%"
[1] "Creating Seurat object..."
[1] "Normalizing Seurat object..."
Normalizing layer: counts
Performing log-normalization
0%   10   20   30   40   50   60   70   80   90   100%
[----|----|----|----|----|----|----|----|----|----|
**************************************************|
[1] "Finding variable genes..."
Finding variable features for layer counts
Calculating gene variances
0%   10   20   30   40   50   60   70   80   90   100%
[----|----|----|----|----|----|----|----|----|----|
**************************************************|
Calculating feature variances of standardized and clipped values
0%   10   20   30   40   50   60   70   80   90   100%
[----|----|----|----|----|----|----|----|----|----|
**************************************************|
[1] "Scaling data..."
Centering and scaling data matrix

  |                                                                                                                                                                                                                     
  |                                                                                                                                                                                                               |   0%
  |                                                                                                                                                                                                                     
  |========================================================================================================                                                                                                       |  50%
  |                                                                                                                                                                                                                     
  |===============================================================================================================================================================================================================| 100%
[1] "Running PCA..."
[1] "Calculating PC distance matrix..."
[1] "Defining neighborhoods..."
[1] "Computing pANN across all pK..."
[1] "pK = 0.005..."
[1] "pK = 0.01..."
[1] "pK = 0.02..."
[1] "pK = 0.03..."
[1] "pK = 0.04..."
[1] "pK = 0.05..."
[1] "pK = 0.06..."
[1] "pK = 0.07..."
[1] "pK = 0.08..."
[1] "pK = 0.09..."
[1] "pK = 0.1..."
[1] "pK = 0.11..."
[1] "pK = 0.12..."
[1] "pK = 0.13..."
[1] "pK = 0.14..."
[1] "pK = 0.15..."
[1] "pK = 0.16..."
[1] "pK = 0.17..."
[1] "pK = 0.18..."
[1] "pK = 0.19..."
[1] "pK = 0.2..."
[1] "pK = 0.21..."
[1] "pK = 0.22..."
[1] "pK = 0.23..."
[1] "pK = 0.24..."
[1] "pK = 0.25..."
[1] "pK = 0.26..."
[1] "pK = 0.27..."
[1] "pK = 0.28..."
[1] "pK = 0.29..."
[1] "pK = 0.3..."
[1] "Creating artificial doublets for pN = 30%"
[1] "Creating Seurat object..."
[1] "Normalizing Seurat object..."
Normalizing layer: counts
Performing log-normalization
0%   10   20   30   40   50   60   70   80   90   100%
[----|----|----|----|----|----|----|----|----|----|
**************************************************|
[1] "Finding variable genes..."
Finding variable features for layer counts
Calculating gene variances
0%   10   20   30   40   50   60   70   80   90   100%
[----|----|----|----|----|----|----|----|----|----|
**************************************************|
Calculating feature variances of standardized and clipped values
0%   10   20   30   40   50   60   70   80   90   100%
[----|----|----|----|----|----|----|----|----|----|
**************************************************|
[1] "Scaling data..."
Centering and scaling data matrix

  |                                                                                                                                                                                                                     
  |                                                                                                                                                                                                               |   0%
  |                                                                                                                                                                                                                     
  |========================================================================================================                                                                                                       |  50%
  |                                                                                                                                                                                                                     
  |===============================================================================================================================================================================================================| 100%
[1] "Running PCA..."
[1] "Calculating PC distance matrix..."
[1] "Defining neighborhoods..."
[1] "Computing pANN across all pK..."
[1] "pK = 0.005..."
[1] "pK = 0.01..."
[1] "pK = 0.02..."
[1] "pK = 0.03..."
[1] "pK = 0.04..."
[1] "pK = 0.05..."
[1] "pK = 0.06..."
[1] "pK = 0.07..."
[1] "pK = 0.08..."
[1] "pK = 0.09..."
[1] "pK = 0.1..."
[1] "pK = 0.11..."
[1] "pK = 0.12..."
[1] "pK = 0.13..."
[1] "pK = 0.14..."
[1] "pK = 0.15..."
[1] "pK = 0.16..."
[1] "pK = 0.17..."
[1] "pK = 0.18..."
[1] "pK = 0.19..."
[1] "pK = 0.2..."
[1] "pK = 0.21..."
[1] "pK = 0.22..."
[1] "pK = 0.23..."
[1] "pK = 0.24..."
[1] "pK = 0.25..."
[1] "pK = 0.26..."
[1] "pK = 0.27..."
[1] "pK = 0.28..."
[1] "pK = 0.29..."
[1] "pK = 0.3..."

NULL
[1] "Selected pK: 0.005"
[1] "Creating 1378 artificial doublets..."
[1] "Creating Seurat object..."
[1] "Normalizing Seurat object..."
Normalizing layer: counts
Performing log-normalization
0%   10   20   30   40   50   60   70   80   90   100%
[----|----|----|----|----|----|----|----|----|----|
**************************************************|
[1] "Finding variable genes..."
Finding variable features for layer counts
Calculating gene variances
0%   10   20   30   40   50   60   70   80   90   100%
[----|----|----|----|----|----|----|----|----|----|
**************************************************|
Calculating feature variances of standardized and clipped values
0%   10   20   30   40   50   60   70   80   90   100%
[----|----|----|----|----|----|----|----|----|----|
**************************************************|
[1] "Scaling data..."
Centering and scaling data matrix

  |                                                                                                                                                                                                                     
  |                                                                                                                                                                                                               |   0%
  |                                                                                                                                                                                                                     
  |========================================================================================================                                                                                                       |  50%
  |                                                                                                                                                                                                                     
  |===============================================================================================================================================================================================================| 100%
[1] "Running PCA..."
[1] "Calculating PC distance matrix..."
[1] "Computing pANN..."
[1] "Classifying doublets.."

Doublet Singlet 
    193    5318 
[1] "Processing sample: 8"
[1] 55357 10838
[1] "Creating artificial doublets for pN = 5%"
[1] "Creating Seurat object..."
[1] "Normalizing Seurat object..."
Normalizing layer: counts
Performing log-normalization
0%   10   20   30   40   50   60   70   80   90   100%
[----|----|----|----|----|----|----|----|----|----|
**************************************************|
[1] "Finding variable genes..."
Finding variable features for layer counts
Calculating gene variances
0%   10   20   30   40   50   60   70   80   90   100%
[----|----|----|----|----|----|----|----|----|----|
**************************************************|
Calculating feature variances of standardized and clipped values
0%   10   20   30   40   50   60   70   80   90   100%
[----|----|----|----|----|----|----|----|----|----|
**************************************************|
[1] "Scaling data..."
Centering and scaling data matrix

  |                                                                                                                                                                                                                     
  |                                                                                                                                                                                                               |   0%
  |                                                                                                                                                                                                                     
  |========================================================================================================                                                                                                       |  50%
  |                                                                                                                                                                                                                     
  |===============================================================================================================================================================================================================| 100%
[1] "Running PCA..."
[1] "Calculating PC distance matrix..."
[1] "Defining neighborhoods..."
[1] "Computing pANN across all pK..."
[1] "pK = 0.001..."
[1] "pK = 0.005..."
[1] "pK = 0.01..."
[1] "pK = 0.02..."
[1] "pK = 0.03..."
[1] "pK = 0.04..."
[1] "pK = 0.05..."
[1] "pK = 0.06..."
[1] "pK = 0.07..."
[1] "pK = 0.08..."
[1] "pK = 0.09..."
[1] "pK = 0.1..."
[1] "pK = 0.11..."
[1] "pK = 0.12..."
[1] "pK = 0.13..."
[1] "pK = 0.14..."
[1] "pK = 0.15..."
[1] "pK = 0.16..."
[1] "pK = 0.17..."
[1] "pK = 0.18..."
[1] "pK = 0.19..."
[1] "pK = 0.2..."
[1] "pK = 0.21..."
[1] "pK = 0.22..."
[1] "pK = 0.23..."
[1] "pK = 0.24..."
[1] "pK = 0.25..."
[1] "pK = 0.26..."
[1] "pK = 0.27..."
[1] "pK = 0.28..."
[1] "pK = 0.29..."
[1] "pK = 0.3..."
[1] "Creating artificial doublets for pN = 10%"
[1] "Creating Seurat object..."
[1] "Normalizing Seurat object..."
Normalizing layer: counts
Performing log-normalization
0%   10   20   30   40   50   60   70   80   90   100%
[----|----|----|----|----|----|----|----|----|----|
**************************************************|
[1] "Finding variable genes..."
Finding variable features for layer counts
Calculating gene variances
0%   10   20   30   40   50   60   70   80   90   100%
[----|----|----|----|----|----|----|----|----|----|
**************************************************|
Calculating feature variances of standardized and clipped values
0%   10   20   30   40   50   60   70   80   90   100%
[----|----|----|----|----|----|----|----|----|----|
**************************************************|
[1] "Scaling data..."
Centering and scaling data matrix

  |                                                                                                                                                                                                                     
  |                                                                                                                                                                                                               |   0%
  |                                                                                                                                                                                                                     
  |========================================================================================================                                                                                                       |  50%
  |                                                                                                                                                                                                                     
  |===============================================================================================================================================================================================================| 100%
[1] "Running PCA..."
[1] "Calculating PC distance matrix..."
[1] "Defining neighborhoods..."
[1] "Computing pANN across all pK..."
[1] "pK = 0.001..."
[1] "pK = 0.005..."
[1] "pK = 0.01..."
[1] "pK = 0.02..."
[1] "pK = 0.03..."
[1] "pK = 0.04..."
[1] "pK = 0.05..."
[1] "pK = 0.06..."
[1] "pK = 0.07..."
[1] "pK = 0.08..."
[1] "pK = 0.09..."
[1] "pK = 0.1..."
[1] "pK = 0.11..."
[1] "pK = 0.12..."
[1] "pK = 0.13..."
[1] "pK = 0.14..."
[1] "pK = 0.15..."
[1] "pK = 0.16..."
[1] "pK = 0.17..."
[1] "pK = 0.18..."
[1] "pK = 0.19..."
[1] "pK = 0.2..."
[1] "pK = 0.21..."
[1] "pK = 0.22..."
[1] "pK = 0.23..."
[1] "pK = 0.24..."
[1] "pK = 0.25..."
[1] "pK = 0.26..."
[1] "pK = 0.27..."
[1] "pK = 0.28..."
[1] "pK = 0.29..."
[1] "pK = 0.3..."
[1] "Creating artificial doublets for pN = 15%"
[1] "Creating Seurat object..."
[1] "Normalizing Seurat object..."
Normalizing layer: counts
Performing log-normalization
0%   10   20   30   40   50   60   70   80   90   100%
[----|----|----|----|----|----|----|----|----|----|
**************************************************|
[1] "Finding variable genes..."
Finding variable features for layer counts
Calculating gene variances
0%   10   20   30   40   50   60   70   80   90   100%
[----|----|----|----|----|----|----|----|----|----|
**************************************************|
Calculating feature variances of standardized and clipped values
0%   10   20   30   40   50   60   70   80   90   100%
[----|----|----|----|----|----|----|----|----|----|
**************************************************|
[1] "Scaling data..."
Centering and scaling data matrix

  |                                                                                                                                                                                                                     
  |                                                                                                                                                                                                               |   0%
  |                                                                                                                                                                                                                     
  |========================================================================================================                                                                                                       |  50%
  |                                                                                                                                                                                                                     
  |===============================================================================================================================================================================================================| 100%
[1] "Running PCA..."
[1] "Calculating PC distance matrix..."
[1] "Defining neighborhoods..."
[1] "Computing pANN across all pK..."
[1] "pK = 0.001..."
[1] "pK = 0.005..."
[1] "pK = 0.01..."
[1] "pK = 0.02..."
[1] "pK = 0.03..."
[1] "pK = 0.04..."
[1] "pK = 0.05..."
[1] "pK = 0.06..."
[1] "pK = 0.07..."
[1] "pK = 0.08..."
[1] "pK = 0.09..."
[1] "pK = 0.1..."
[1] "pK = 0.11..."
[1] "pK = 0.12..."
[1] "pK = 0.13..."
[1] "pK = 0.14..."
[1] "pK = 0.15..."
[1] "pK = 0.16..."
[1] "pK = 0.17..."
[1] "pK = 0.18..."
[1] "pK = 0.19..."
[1] "pK = 0.2..."
[1] "pK = 0.21..."
[1] "pK = 0.22..."
[1] "pK = 0.23..."
[1] "pK = 0.24..."
[1] "pK = 0.25..."
[1] "pK = 0.26..."
[1] "pK = 0.27..."
[1] "pK = 0.28..."
[1] "pK = 0.29..."
[1] "pK = 0.3..."
[1] "Creating artificial doublets for pN = 20%"
[1] "Creating Seurat object..."
[1] "Normalizing Seurat object..."
Normalizing layer: counts
Performing log-normalization
0%   10   20   30   40   50   60   70   80   90   100%
[----|----|----|----|----|----|----|----|----|----|
**************************************************|
[1] "Finding variable genes..."
Finding variable features for layer counts
Calculating gene variances
0%   10   20   30   40   50   60   70   80   90   100%
[----|----|----|----|----|----|----|----|----|----|
**************************************************|
Calculating feature variances of standardized and clipped values
0%   10   20   30   40   50   60   70   80   90   100%
[----|----|----|----|----|----|----|----|----|----|
**************************************************|
[1] "Scaling data..."
Centering and scaling data matrix

  |                                                                                                                                                                                                                     
  |                                                                                                                                                                                                               |   0%
  |                                                                                                                                                                                                                     
  |========================================================================================================                                                                                                       |  50%
  |                                                                                                                                                                                                                     
  |===============================================================================================================================================================================================================| 100%
[1] "Running PCA..."
[1] "Calculating PC distance matrix..."
[1] "Defining neighborhoods..."
[1] "Computing pANN across all pK..."
[1] "pK = 0.001..."
[1] "pK = 0.005..."
[1] "pK = 0.01..."
[1] "pK = 0.02..."
[1] "pK = 0.03..."
[1] "pK = 0.04..."
[1] "pK = 0.05..."
[1] "pK = 0.06..."
[1] "pK = 0.07..."
[1] "pK = 0.08..."
[1] "pK = 0.09..."
[1] "pK = 0.1..."
[1] "pK = 0.11..."
[1] "pK = 0.12..."
[1] "pK = 0.13..."
[1] "pK = 0.14..."
[1] "pK = 0.15..."
[1] "pK = 0.16..."
[1] "pK = 0.17..."
[1] "pK = 0.18..."
[1] "pK = 0.19..."
[1] "pK = 0.2..."
[1] "pK = 0.21..."
[1] "pK = 0.22..."
[1] "pK = 0.23..."
[1] "pK = 0.24..."
[1] "pK = 0.25..."
[1] "pK = 0.26..."
[1] "pK = 0.27..."
[1] "pK = 0.28..."
[1] "pK = 0.29..."
[1] "pK = 0.3..."
[1] "Creating artificial doublets for pN = 25%"
[1] "Creating Seurat object..."
[1] "Normalizing Seurat object..."
Normalizing layer: counts
Performing log-normalization
0%   10   20   30   40   50   60   70   80   90   100%
[----|----|----|----|----|----|----|----|----|----|
**************************************************|
[1] "Finding variable genes..."
Finding variable features for layer counts
Calculating gene variances
0%   10   20   30   40   50   60   70   80   90   100%
[----|----|----|----|----|----|----|----|----|----|
**************************************************|
Calculating feature variances of standardized and clipped values
0%   10   20   30   40   50   60   70   80   90   100%
[----|----|----|----|----|----|----|----|----|----|
**************************************************|
[1] "Scaling data..."
Centering and scaling data matrix

  |                                                                                                                                                                                                                     
  |                                                                                                                                                                                                               |   0%
  |                                                                                                                                                                                                                     
  |========================================================================================================                                                                                                       |  50%
  |                                                                                                                                                                                                                     
  |===============================================================================================================================================================================================================| 100%
[1] "Running PCA..."
[1] "Calculating PC distance matrix..."
[1] "Defining neighborhoods..."
[1] "Computing pANN across all pK..."
[1] "pK = 0.001..."
[1] "pK = 0.005..."
[1] "pK = 0.01..."
[1] "pK = 0.02..."
[1] "pK = 0.03..."
[1] "pK = 0.04..."
[1] "pK = 0.05..."
[1] "pK = 0.06..."
[1] "pK = 0.07..."
[1] "pK = 0.08..."
[1] "pK = 0.09..."
[1] "pK = 0.1..."
[1] "pK = 0.11..."
[1] "pK = 0.12..."
[1] "pK = 0.13..."
[1] "pK = 0.14..."
[1] "pK = 0.15..."
[1] "pK = 0.16..."
[1] "pK = 0.17..."
[1] "pK = 0.18..."
[1] "pK = 0.19..."
[1] "pK = 0.2..."
[1] "pK = 0.21..."
[1] "pK = 0.22..."
[1] "pK = 0.23..."
[1] "pK = 0.24..."
[1] "pK = 0.25..."
[1] "pK = 0.26..."
[1] "pK = 0.27..."
[1] "pK = 0.28..."
[1] "pK = 0.29..."
[1] "pK = 0.3..."
[1] "Creating artificial doublets for pN = 30%"
[1] "Creating Seurat object..."
[1] "Normalizing Seurat object..."
Normalizing layer: counts
Performing log-normalization
0%   10   20   30   40   50   60   70   80   90   100%
[----|----|----|----|----|----|----|----|----|----|
**************************************************|
[1] "Finding variable genes..."
Finding variable features for layer counts
Calculating gene variances
0%   10   20   30   40   50   60   70   80   90   100%
[----|----|----|----|----|----|----|----|----|----|
**************************************************|
Calculating feature variances of standardized and clipped values
0%   10   20   30   40   50   60   70   80   90   100%
[----|----|----|----|----|----|----|----|----|----|
**************************************************|
[1] "Scaling data..."
Centering and scaling data matrix

  |                                                                                                                                                                                                                     
  |                                                                                                                                                                                                               |   0%
  |                                                                                                                                                                                                                     
  |========================================================================================================                                                                                                       |  50%
  |                                                                                                                                                                                                                     
  |===============================================================================================================================================================================================================| 100%
[1] "Running PCA..."
[1] "Calculating PC distance matrix..."
[1] "Defining neighborhoods..."
[1] "Computing pANN across all pK..."
[1] "pK = 0.001..."
[1] "pK = 0.005..."
[1] "pK = 0.01..."
[1] "pK = 0.02..."
[1] "pK = 0.03..."
[1] "pK = 0.04..."
[1] "pK = 0.05..."
[1] "pK = 0.06..."
[1] "pK = 0.07..."
[1] "pK = 0.08..."
[1] "pK = 0.09..."
[1] "pK = 0.1..."
[1] "pK = 0.11..."
[1] "pK = 0.12..."
[1] "pK = 0.13..."
[1] "pK = 0.14..."
[1] "pK = 0.15..."
[1] "pK = 0.16..."
[1] "pK = 0.17..."
[1] "pK = 0.18..."
[1] "pK = 0.19..."
[1] "pK = 0.2..."
[1] "pK = 0.21..."
[1] "pK = 0.22..."
[1] "pK = 0.23..."
[1] "pK = 0.24..."
[1] "pK = 0.25..."
[1] "pK = 0.26..."
[1] "pK = 0.27..."
[1] "pK = 0.28..."
[1] "pK = 0.29..."
[1] "pK = 0.3..."

NULL
[1] "Selected pK: 0.005"
[1] "Creating 2710 artificial doublets..."
[1] "Creating Seurat object..."
[1] "Normalizing Seurat object..."
Normalizing layer: counts
Performing log-normalization
0%   10   20   30   40   50   60   70   80   90   100%
[----|----|----|----|----|----|----|----|----|----|
**************************************************|
[1] "Finding variable genes..."
Finding variable features for layer counts
Calculating gene variances
0%   10   20   30   40   50   60   70   80   90   100%
[----|----|----|----|----|----|----|----|----|----|
**************************************************|
Calculating feature variances of standardized and clipped values
0%   10   20   30   40   50   60   70   80   90   100%
[----|----|----|----|----|----|----|----|----|----|
**************************************************|
[1] "Scaling data..."
Centering and scaling data matrix

  |                                                                                                                                                                                                                     
  |                                                                                                                                                                                                               |   0%
  |                                                                                                                                                                                                                     
  |========================================================================================================                                                                                                       |  50%
  |                                                                                                                                                                                                                     
  |===============================================================================================================================================================================================================| 100%
[1] "Running PCA..."
[1] "Calculating PC distance matrix..."
[1] "Computing pANN..."
[1] "Classifying doublets.."

Doublet Singlet 
    379   10459 
[1] "Processing sample: 9"
[1] 55357  4133
[1] "Creating artificial doublets for pN = 5%"
[1] "Creating Seurat object..."
[1] "Normalizing Seurat object..."
Normalizing layer: counts
Performing log-normalization
0%   10   20   30   40   50   60   70   80   90   100%
[----|----|----|----|----|----|----|----|----|----|
**************************************************|
[1] "Finding variable genes..."
Finding variable features for layer counts
Calculating gene variances
0%   10   20   30   40   50   60   70   80   90   100%
[----|----|----|----|----|----|----|----|----|----|
**************************************************|
Calculating feature variances of standardized and clipped values
0%   10   20   30   40   50   60   70   80   90   100%
[----|----|----|----|----|----|----|----|----|----|
**************************************************|
[1] "Scaling data..."
Centering and scaling data matrix

  |                                                                                                                                                                                                                     
  |                                                                                                                                                                                                               |   0%
  |                                                                                                                                                                                                                     
  |========================================================================================================                                                                                                       |  50%
  |                                                                                                                                                                                                                     
  |===============================================================================================================================================================================================================| 100%
[1] "Running PCA..."
[1] "Calculating PC distance matrix..."
[1] "Defining neighborhoods..."
[1] "Computing pANN across all pK..."
[1] "pK = 0.005..."
[1] "pK = 0.01..."
[1] "pK = 0.02..."
[1] "pK = 0.03..."
[1] "pK = 0.04..."
[1] "pK = 0.05..."
[1] "pK = 0.06..."
[1] "pK = 0.07..."
[1] "pK = 0.08..."
[1] "pK = 0.09..."
[1] "pK = 0.1..."
[1] "pK = 0.11..."
[1] "pK = 0.12..."
[1] "pK = 0.13..."
[1] "pK = 0.14..."
[1] "pK = 0.15..."
[1] "pK = 0.16..."
[1] "pK = 0.17..."
[1] "pK = 0.18..."
[1] "pK = 0.19..."
[1] "pK = 0.2..."
[1] "pK = 0.21..."
[1] "pK = 0.22..."
[1] "pK = 0.23..."
[1] "pK = 0.24..."
[1] "pK = 0.25..."
[1] "pK = 0.26..."
[1] "pK = 0.27..."
[1] "pK = 0.28..."
[1] "pK = 0.29..."
[1] "pK = 0.3..."
[1] "Creating artificial doublets for pN = 10%"
[1] "Creating Seurat object..."
[1] "Normalizing Seurat object..."
Normalizing layer: counts
Performing log-normalization
0%   10   20   30   40   50   60   70   80   90   100%
[----|----|----|----|----|----|----|----|----|----|
**************************************************|
[1] "Finding variable genes..."
Finding variable features for layer counts
Calculating gene variances
0%   10   20   30   40   50   60   70   80   90   100%
[----|----|----|----|----|----|----|----|----|----|
**************************************************|
Calculating feature variances of standardized and clipped values
0%   10   20   30   40   50   60   70   80   90   100%
[----|----|----|----|----|----|----|----|----|----|
**************************************************|
[1] "Scaling data..."
Centering and scaling data matrix

  |                                                                                                                                                                                                                     
  |                                                                                                                                                                                                               |   0%
  |                                                                                                                                                                                                                     
  |========================================================================================================                                                                                                       |  50%
  |                                                                                                                                                                                                                     
  |===============================================================================================================================================================================================================| 100%
[1] "Running PCA..."
[1] "Calculating PC distance matrix..."
[1] "Defining neighborhoods..."
[1] "Computing pANN across all pK..."
[1] "pK = 0.005..."
[1] "pK = 0.01..."
[1] "pK = 0.02..."
[1] "pK = 0.03..."
[1] "pK = 0.04..."
[1] "pK = 0.05..."
[1] "pK = 0.06..."
[1] "pK = 0.07..."
[1] "pK = 0.08..."
[1] "pK = 0.09..."
[1] "pK = 0.1..."
[1] "pK = 0.11..."
[1] "pK = 0.12..."
[1] "pK = 0.13..."
[1] "pK = 0.14..."
[1] "pK = 0.15..."
[1] "pK = 0.16..."
[1] "pK = 0.17..."
[1] "pK = 0.18..."
[1] "pK = 0.19..."
[1] "pK = 0.2..."
[1] "pK = 0.21..."
[1] "pK = 0.22..."
[1] "pK = 0.23..."
[1] "pK = 0.24..."
[1] "pK = 0.25..."
[1] "pK = 0.26..."
[1] "pK = 0.27..."
[1] "pK = 0.28..."
[1] "pK = 0.29..."
[1] "pK = 0.3..."
[1] "Creating artificial doublets for pN = 15%"
[1] "Creating Seurat object..."
[1] "Normalizing Seurat object..."
Normalizing layer: counts
Performing log-normalization
0%   10   20   30   40   50   60   70   80   90   100%
[----|----|----|----|----|----|----|----|----|----|
**************************************************|
[1] "Finding variable genes..."
Finding variable features for layer counts
Calculating gene variances
0%   10   20   30   40   50   60   70   80   90   100%
[----|----|----|----|----|----|----|----|----|----|
**************************************************|
Calculating feature variances of standardized and clipped values
0%   10   20   30   40   50   60   70   80   90   100%
[----|----|----|----|----|----|----|----|----|----|
**************************************************|
[1] "Scaling data..."
Centering and scaling data matrix

  |                                                                                                                                                                                                                     
  |                                                                                                                                                                                                               |   0%
  |                                                                                                                                                                                                                     
  |========================================================================================================                                                                                                       |  50%
  |                                                                                                                                                                                                                     
  |===============================================================================================================================================================================================================| 100%
[1] "Running PCA..."
[1] "Calculating PC distance matrix..."
[1] "Defining neighborhoods..."
[1] "Computing pANN across all pK..."
[1] "pK = 0.005..."
[1] "pK = 0.01..."
[1] "pK = 0.02..."
[1] "pK = 0.03..."
[1] "pK = 0.04..."
[1] "pK = 0.05..."
[1] "pK = 0.06..."
[1] "pK = 0.07..."
[1] "pK = 0.08..."
[1] "pK = 0.09..."
[1] "pK = 0.1..."
[1] "pK = 0.11..."
[1] "pK = 0.12..."
[1] "pK = 0.13..."
[1] "pK = 0.14..."
[1] "pK = 0.15..."
[1] "pK = 0.16..."
[1] "pK = 0.17..."
[1] "pK = 0.18..."
[1] "pK = 0.19..."
[1] "pK = 0.2..."
[1] "pK = 0.21..."
[1] "pK = 0.22..."
[1] "pK = 0.23..."
[1] "pK = 0.24..."
[1] "pK = 0.25..."
[1] "pK = 0.26..."
[1] "pK = 0.27..."
[1] "pK = 0.28..."
[1] "pK = 0.29..."
[1] "pK = 0.3..."
[1] "Creating artificial doublets for pN = 20%"
[1] "Creating Seurat object..."
[1] "Normalizing Seurat object..."
Normalizing layer: counts
Performing log-normalization
0%   10   20   30   40   50   60   70   80   90   100%
[----|----|----|----|----|----|----|----|----|----|
**************************************************|
[1] "Finding variable genes..."
Finding variable features for layer counts
Calculating gene variances
0%   10   20   30   40   50   60   70   80   90   100%
[----|----|----|----|----|----|----|----|----|----|
**************************************************|
Calculating feature variances of standardized and clipped values
0%   10   20   30   40   50   60   70   80   90   100%
[----|----|----|----|----|----|----|----|----|----|
**************************************************|
[1] "Scaling data..."
Centering and scaling data matrix

  |                                                                                                                                                                                                                     
  |                                                                                                                                                                                                               |   0%
  |                                                                                                                                                                                                                     
  |========================================================================================================                                                                                                       |  50%
  |                                                                                                                                                                                                                     
  |===============================================================================================================================================================================================================| 100%
[1] "Running PCA..."
[1] "Calculating PC distance matrix..."
[1] "Defining neighborhoods..."
[1] "Computing pANN across all pK..."
[1] "pK = 0.005..."
[1] "pK = 0.01..."
[1] "pK = 0.02..."
[1] "pK = 0.03..."
[1] "pK = 0.04..."
[1] "pK = 0.05..."
[1] "pK = 0.06..."
[1] "pK = 0.07..."
[1] "pK = 0.08..."
[1] "pK = 0.09..."
[1] "pK = 0.1..."
[1] "pK = 0.11..."
[1] "pK = 0.12..."
[1] "pK = 0.13..."
[1] "pK = 0.14..."
[1] "pK = 0.15..."
[1] "pK = 0.16..."
[1] "pK = 0.17..."
[1] "pK = 0.18..."
[1] "pK = 0.19..."
[1] "pK = 0.2..."
[1] "pK = 0.21..."
[1] "pK = 0.22..."
[1] "pK = 0.23..."
[1] "pK = 0.24..."
[1] "pK = 0.25..."
[1] "pK = 0.26..."
[1] "pK = 0.27..."
[1] "pK = 0.28..."
[1] "pK = 0.29..."
[1] "pK = 0.3..."
[1] "Creating artificial doublets for pN = 25%"
[1] "Creating Seurat object..."
[1] "Normalizing Seurat object..."
Normalizing layer: counts
Performing log-normalization
0%   10   20   30   40   50   60   70   80   90   100%
[----|----|----|----|----|----|----|----|----|----|
**************************************************|
[1] "Finding variable genes..."
Finding variable features for layer counts
Calculating gene variances
0%   10   20   30   40   50   60   70   80   90   100%
[----|----|----|----|----|----|----|----|----|----|
**************************************************|
Calculating feature variances of standardized and clipped values
0%   10   20   30   40   50   60   70   80   90   100%
[----|----|----|----|----|----|----|----|----|----|
**************************************************|
[1] "Scaling data..."
Centering and scaling data matrix

  |                                                                                                                                                                                                                     
  |                                                                                                                                                                                                               |   0%
  |                                                                                                                                                                                                                     
  |========================================================================================================                                                                                                       |  50%
  |                                                                                                                                                                                                                     
  |===============================================================================================================================================================================================================| 100%
[1] "Running PCA..."
[1] "Calculating PC distance matrix..."
[1] "Defining neighborhoods..."
[1] "Computing pANN across all pK..."
[1] "pK = 0.005..."
[1] "pK = 0.01..."
[1] "pK = 0.02..."
[1] "pK = 0.03..."
[1] "pK = 0.04..."
[1] "pK = 0.05..."
[1] "pK = 0.06..."
[1] "pK = 0.07..."
[1] "pK = 0.08..."
[1] "pK = 0.09..."
[1] "pK = 0.1..."
[1] "pK = 0.11..."
[1] "pK = 0.12..."
[1] "pK = 0.13..."
[1] "pK = 0.14..."
[1] "pK = 0.15..."
[1] "pK = 0.16..."
[1] "pK = 0.17..."
[1] "pK = 0.18..."
[1] "pK = 0.19..."
[1] "pK = 0.2..."
[1] "pK = 0.21..."
[1] "pK = 0.22..."
[1] "pK = 0.23..."
[1] "pK = 0.24..."
[1] "pK = 0.25..."
[1] "pK = 0.26..."
[1] "pK = 0.27..."
[1] "pK = 0.28..."
[1] "pK = 0.29..."
[1] "pK = 0.3..."
[1] "Creating artificial doublets for pN = 30%"
[1] "Creating Seurat object..."
[1] "Normalizing Seurat object..."
Normalizing layer: counts
Performing log-normalization
0%   10   20   30   40   50   60   70   80   90   100%
[----|----|----|----|----|----|----|----|----|----|
**************************************************|
[1] "Finding variable genes..."
Finding variable features for layer counts
Calculating gene variances
0%   10   20   30   40   50   60   70   80   90   100%
[----|----|----|----|----|----|----|----|----|----|
**************************************************|
Calculating feature variances of standardized and clipped values
0%   10   20   30   40   50   60   70   80   90   100%
[----|----|----|----|----|----|----|----|----|----|
**************************************************|
[1] "Scaling data..."
Centering and scaling data matrix

  |                                                                                                                                                                                                                     
  |                                                                                                                                                                                                               |   0%
  |                                                                                                                                                                                                                     
  |========================================================================================================                                                                                                       |  50%
  |                                                                                                                                                                                                                     
  |===============================================================================================================================================================================================================| 100%
[1] "Running PCA..."
[1] "Calculating PC distance matrix..."
[1] "Defining neighborhoods..."
[1] "Computing pANN across all pK..."
[1] "pK = 0.005..."
[1] "pK = 0.01..."
[1] "pK = 0.02..."
[1] "pK = 0.03..."
[1] "pK = 0.04..."
[1] "pK = 0.05..."
[1] "pK = 0.06..."
[1] "pK = 0.07..."
[1] "pK = 0.08..."
[1] "pK = 0.09..."
[1] "pK = 0.1..."
[1] "pK = 0.11..."
[1] "pK = 0.12..."
[1] "pK = 0.13..."
[1] "pK = 0.14..."
[1] "pK = 0.15..."
[1] "pK = 0.16..."
[1] "pK = 0.17..."
[1] "pK = 0.18..."
[1] "pK = 0.19..."
[1] "pK = 0.2..."
[1] "pK = 0.21..."
[1] "pK = 0.22..."
[1] "pK = 0.23..."
[1] "pK = 0.24..."
[1] "pK = 0.25..."
[1] "pK = 0.26..."
[1] "pK = 0.27..."
[1] "pK = 0.28..."
[1] "pK = 0.29..."
[1] "pK = 0.3..."

NULL
[1] "Selected pK: 0.01"
[1] "Creating 1033 artificial doublets..."
[1] "Creating Seurat object..."
[1] "Normalizing Seurat object..."
Normalizing layer: counts
Performing log-normalization
0%   10   20   30   40   50   60   70   80   90   100%
[----|----|----|----|----|----|----|----|----|----|
**************************************************|
[1] "Finding variable genes..."
Finding variable features for layer counts
Calculating gene variances
0%   10   20   30   40   50   60   70   80   90   100%
[----|----|----|----|----|----|----|----|----|----|
**************************************************|
Calculating feature variances of standardized and clipped values
0%   10   20   30   40   50   60   70   80   90   100%
[----|----|----|----|----|----|----|----|----|----|
**************************************************|
[1] "Scaling data..."
Centering and scaling data matrix

  |                                                                                                                                                                                                                     
  |                                                                                                                                                                                                               |   0%
  |                                                                                                                                                                                                                     
  |========================================================================================================                                                                                                       |  50%
  |                                                                                                                                                                                                                     
  |===============================================================================================================================================================================================================| 100%
[1] "Running PCA..."
[1] "Calculating PC distance matrix..."
[1] "Computing pANN..."
[1] "Classifying doublets.."

Doublet Singlet 
    145    3988 
[1] "Processing sample: 10"
[1] 55357  3825
[1] "Creating artificial doublets for pN = 5%"
[1] "Creating Seurat object..."
[1] "Normalizing Seurat object..."
Normalizing layer: counts
Performing log-normalization
0%   10   20   30   40   50   60   70   80   90   100%
[----|----|----|----|----|----|----|----|----|----|
**************************************************|
[1] "Finding variable genes..."
Finding variable features for layer counts
Calculating gene variances
0%   10   20   30   40   50   60   70   80   90   100%
[----|----|----|----|----|----|----|----|----|----|
**************************************************|
Calculating feature variances of standardized and clipped values
0%   10   20   30   40   50   60   70   80   90   100%
[----|----|----|----|----|----|----|----|----|----|
**************************************************|
[1] "Scaling data..."
Centering and scaling data matrix

  |                                                                                                                                                                                                                     
  |                                                                                                                                                                                                               |   0%
  |                                                                                                                                                                                                                     
  |========================================================================================================                                                                                                       |  50%
  |                                                                                                                                                                                                                     
  |===============================================================================================================================================================================================================| 100%
[1] "Running PCA..."
[1] "Calculating PC distance matrix..."
[1] "Defining neighborhoods..."
[1] "Computing pANN across all pK..."
[1] "pK = 0.005..."
[1] "pK = 0.01..."
[1] "pK = 0.02..."
[1] "pK = 0.03..."
[1] "pK = 0.04..."
[1] "pK = 0.05..."
[1] "pK = 0.06..."
[1] "pK = 0.07..."
[1] "pK = 0.08..."
[1] "pK = 0.09..."
[1] "pK = 0.1..."
[1] "pK = 0.11..."
[1] "pK = 0.12..."
[1] "pK = 0.13..."
[1] "pK = 0.14..."
[1] "pK = 0.15..."
[1] "pK = 0.16..."
[1] "pK = 0.17..."
[1] "pK = 0.18..."
[1] "pK = 0.19..."
[1] "pK = 0.2..."
[1] "pK = 0.21..."
[1] "pK = 0.22..."
[1] "pK = 0.23..."
[1] "pK = 0.24..."
[1] "pK = 0.25..."
[1] "pK = 0.26..."
[1] "pK = 0.27..."
[1] "pK = 0.28..."
[1] "pK = 0.29..."
[1] "pK = 0.3..."
[1] "Creating artificial doublets for pN = 10%"
[1] "Creating Seurat object..."
[1] "Normalizing Seurat object..."
Normalizing layer: counts
Performing log-normalization
0%   10   20   30   40   50   60   70   80   90   100%
[----|----|----|----|----|----|----|----|----|----|
**************************************************|
[1] "Finding variable genes..."
Finding variable features for layer counts
Calculating gene variances
0%   10   20   30   40   50   60   70   80   90   100%
[----|----|----|----|----|----|----|----|----|----|
**************************************************|
Calculating feature variances of standardized and clipped values
0%   10   20   30   40   50   60   70   80   90   100%
[----|----|----|----|----|----|----|----|----|----|
**************************************************|
[1] "Scaling data..."
Centering and scaling data matrix

  |                                                                                                                                                                                                                     
  |                                                                                                                                                                                                               |   0%
  |                                                                                                                                                                                                                     
  |========================================================================================================                                                                                                       |  50%
  |                                                                                                                                                                                                                     
  |===============================================================================================================================================================================================================| 100%
[1] "Running PCA..."
[1] "Calculating PC distance matrix..."
[1] "Defining neighborhoods..."
[1] "Computing pANN across all pK..."
[1] "pK = 0.005..."
[1] "pK = 0.01..."
[1] "pK = 0.02..."
[1] "pK = 0.03..."
[1] "pK = 0.04..."
[1] "pK = 0.05..."
[1] "pK = 0.06..."
[1] "pK = 0.07..."
[1] "pK = 0.08..."
[1] "pK = 0.09..."
[1] "pK = 0.1..."
[1] "pK = 0.11..."
[1] "pK = 0.12..."
[1] "pK = 0.13..."
[1] "pK = 0.14..."
[1] "pK = 0.15..."
[1] "pK = 0.16..."
[1] "pK = 0.17..."
[1] "pK = 0.18..."
[1] "pK = 0.19..."
[1] "pK = 0.2..."
[1] "pK = 0.21..."
[1] "pK = 0.22..."
[1] "pK = 0.23..."
[1] "pK = 0.24..."
[1] "pK = 0.25..."
[1] "pK = 0.26..."
[1] "pK = 0.27..."
[1] "pK = 0.28..."
[1] "pK = 0.29..."
[1] "pK = 0.3..."
[1] "Creating artificial doublets for pN = 15%"
[1] "Creating Seurat object..."
[1] "Normalizing Seurat object..."
Normalizing layer: counts
Performing log-normalization
0%   10   20   30   40   50   60   70   80   90   100%
[----|----|----|----|----|----|----|----|----|----|
**************************************************|
[1] "Finding variable genes..."
Finding variable features for layer counts
Calculating gene variances
0%   10   20   30   40   50   60   70   80   90   100%
[----|----|----|----|----|----|----|----|----|----|
**************************************************|
Calculating feature variances of standardized and clipped values
0%   10   20   30   40   50   60   70   80   90   100%
[----|----|----|----|----|----|----|----|----|----|
**************************************************|
[1] "Scaling data..."
Centering and scaling data matrix

  |                                                                                                                                                                                                                     
  |                                                                                                                                                                                                               |   0%
  |                                                                                                                                                                                                                     
  |========================================================================================================                                                                                                       |  50%
  |                                                                                                                                                                                                                     
  |===============================================================================================================================================================================================================| 100%
[1] "Running PCA..."
[1] "Calculating PC distance matrix..."
[1] "Defining neighborhoods..."
[1] "Computing pANN across all pK..."
[1] "pK = 0.005..."
[1] "pK = 0.01..."
[1] "pK = 0.02..."
[1] "pK = 0.03..."
[1] "pK = 0.04..."
[1] "pK = 0.05..."
[1] "pK = 0.06..."
[1] "pK = 0.07..."
[1] "pK = 0.08..."
[1] "pK = 0.09..."
[1] "pK = 0.1..."
[1] "pK = 0.11..."
[1] "pK = 0.12..."
[1] "pK = 0.13..."
[1] "pK = 0.14..."
[1] "pK = 0.15..."
[1] "pK = 0.16..."
[1] "pK = 0.17..."
[1] "pK = 0.18..."
[1] "pK = 0.19..."
[1] "pK = 0.2..."
[1] "pK = 0.21..."
[1] "pK = 0.22..."
[1] "pK = 0.23..."
[1] "pK = 0.24..."
[1] "pK = 0.25..."
[1] "pK = 0.26..."
[1] "pK = 0.27..."
[1] "pK = 0.28..."
[1] "pK = 0.29..."
[1] "pK = 0.3..."
[1] "Creating artificial doublets for pN = 20%"
[1] "Creating Seurat object..."
[1] "Normalizing Seurat object..."
Normalizing layer: counts
Performing log-normalization
0%   10   20   30   40   50   60   70   80   90   100%
[----|----|----|----|----|----|----|----|----|----|
**************************************************|
[1] "Finding variable genes..."
Finding variable features for layer counts
Calculating gene variances
0%   10   20   30   40   50   60   70   80   90   100%
[----|----|----|----|----|----|----|----|----|----|
**************************************************|
Calculating feature variances of standardized and clipped values
0%   10   20   30   40   50   60   70   80   90   100%
[----|----|----|----|----|----|----|----|----|----|
**************************************************|
[1] "Scaling data..."
Centering and scaling data matrix

  |                                                                                                                                                                                                                     
  |                                                                                                                                                                                                               |   0%
  |                                                                                                                                                                                                                     
  |========================================================================================================                                                                                                       |  50%
  |                                                                                                                                                                                                                     
  |===============================================================================================================================================================================================================| 100%
[1] "Running PCA..."
[1] "Calculating PC distance matrix..."
[1] "Defining neighborhoods..."
[1] "Computing pANN across all pK..."
[1] "pK = 0.005..."
[1] "pK = 0.01..."
[1] "pK = 0.02..."
[1] "pK = 0.03..."
[1] "pK = 0.04..."
[1] "pK = 0.05..."
[1] "pK = 0.06..."
[1] "pK = 0.07..."
[1] "pK = 0.08..."
[1] "pK = 0.09..."
[1] "pK = 0.1..."
[1] "pK = 0.11..."
[1] "pK = 0.12..."
[1] "pK = 0.13..."
[1] "pK = 0.14..."
[1] "pK = 0.15..."
[1] "pK = 0.16..."
[1] "pK = 0.17..."
[1] "pK = 0.18..."
[1] "pK = 0.19..."
[1] "pK = 0.2..."
[1] "pK = 0.21..."
[1] "pK = 0.22..."
[1] "pK = 0.23..."
[1] "pK = 0.24..."
[1] "pK = 0.25..."
[1] "pK = 0.26..."
[1] "pK = 0.27..."
[1] "pK = 0.28..."
[1] "pK = 0.29..."
[1] "pK = 0.3..."
[1] "Creating artificial doublets for pN = 25%"
[1] "Creating Seurat object..."
[1] "Normalizing Seurat object..."
Normalizing layer: counts
Performing log-normalization
0%   10   20   30   40   50   60   70   80   90   100%
[----|----|----|----|----|----|----|----|----|----|
**************************************************|
[1] "Finding variable genes..."
Finding variable features for layer counts
Calculating gene variances
0%   10   20   30   40   50   60   70   80   90   100%
[----|----|----|----|----|----|----|----|----|----|
**************************************************|
Calculating feature variances of standardized and clipped values
0%   10   20   30   40   50   60   70   80   90   100%
[----|----|----|----|----|----|----|----|----|----|
**************************************************|
[1] "Scaling data..."
Centering and scaling data matrix

  |                                                                                                                                                                                                                     
  |                                                                                                                                                                                                               |   0%
  |                                                                                                                                                                                                                     
  |========================================================================================================                                                                                                       |  50%
  |                                                                                                                                                                                                                     
  |===============================================================================================================================================================================================================| 100%
[1] "Running PCA..."
[1] "Calculating PC distance matrix..."
[1] "Defining neighborhoods..."
[1] "Computing pANN across all pK..."
[1] "pK = 0.005..."
[1] "pK = 0.01..."
[1] "pK = 0.02..."
[1] "pK = 0.03..."
[1] "pK = 0.04..."
[1] "pK = 0.05..."
[1] "pK = 0.06..."
[1] "pK = 0.07..."
[1] "pK = 0.08..."
[1] "pK = 0.09..."
[1] "pK = 0.1..."
[1] "pK = 0.11..."
[1] "pK = 0.12..."
[1] "pK = 0.13..."
[1] "pK = 0.14..."
[1] "pK = 0.15..."
[1] "pK = 0.16..."
[1] "pK = 0.17..."
[1] "pK = 0.18..."
[1] "pK = 0.19..."
[1] "pK = 0.2..."
[1] "pK = 0.21..."
[1] "pK = 0.22..."
[1] "pK = 0.23..."
[1] "pK = 0.24..."
[1] "pK = 0.25..."
[1] "pK = 0.26..."
[1] "pK = 0.27..."
[1] "pK = 0.28..."
[1] "pK = 0.29..."
[1] "pK = 0.3..."
[1] "Creating artificial doublets for pN = 30%"
[1] "Creating Seurat object..."
[1] "Normalizing Seurat object..."
Normalizing layer: counts
Performing log-normalization
0%   10   20   30   40   50   60   70   80   90   100%
[----|----|----|----|----|----|----|----|----|----|
**************************************************|
[1] "Finding variable genes..."
Finding variable features for layer counts
Calculating gene variances
0%   10   20   30   40   50   60   70   80   90   100%
[----|----|----|----|----|----|----|----|----|----|
**************************************************|
Calculating feature variances of standardized and clipped values
0%   10   20   30   40   50   60   70   80   90   100%
[----|----|----|----|----|----|----|----|----|----|
**************************************************|
[1] "Scaling data..."
Centering and scaling data matrix

  |                                                                                                                                                                                                                     
  |                                                                                                                                                                                                               |   0%
  |                                                                                                                                                                                                                     
  |========================================================================================================                                                                                                       |  50%
  |                                                                                                                                                                                                                     
  |===============================================================================================================================================================================================================| 100%
[1] "Running PCA..."
[1] "Calculating PC distance matrix..."
[1] "Defining neighborhoods..."
[1] "Computing pANN across all pK..."
[1] "pK = 0.005..."
[1] "pK = 0.01..."
[1] "pK = 0.02..."
[1] "pK = 0.03..."
[1] "pK = 0.04..."
[1] "pK = 0.05..."
[1] "pK = 0.06..."
[1] "pK = 0.07..."
[1] "pK = 0.08..."
[1] "pK = 0.09..."
[1] "pK = 0.1..."
[1] "pK = 0.11..."
[1] "pK = 0.12..."
[1] "pK = 0.13..."
[1] "pK = 0.14..."
[1] "pK = 0.15..."
[1] "pK = 0.16..."
[1] "pK = 0.17..."
[1] "pK = 0.18..."
[1] "pK = 0.19..."
[1] "pK = 0.2..."
[1] "pK = 0.21..."
[1] "pK = 0.22..."
[1] "pK = 0.23..."
[1] "pK = 0.24..."
[1] "pK = 0.25..."
[1] "pK = 0.26..."
[1] "pK = 0.27..."
[1] "pK = 0.28..."
[1] "pK = 0.29..."
[1] "pK = 0.3..."

NULL
[1] "Selected pK: 0.27"
[1] "Creating 956 artificial doublets..."
[1] "Creating Seurat object..."
[1] "Normalizing Seurat object..."
Normalizing layer: counts
Performing log-normalization
0%   10   20   30   40   50   60   70   80   90   100%
[----|----|----|----|----|----|----|----|----|----|
**************************************************|
[1] "Finding variable genes..."
Finding variable features for layer counts
Calculating gene variances
0%   10   20   30   40   50   60   70   80   90   100%
[----|----|----|----|----|----|----|----|----|----|
**************************************************|
Calculating feature variances of standardized and clipped values
0%   10   20   30   40   50   60   70   80   90   100%
[----|----|----|----|----|----|----|----|----|----|
**************************************************|
[1] "Scaling data..."
Centering and scaling data matrix

  |                                                                                                                                                                                                                     
  |                                                                                                                                                                                                               |   0%
  |                                                                                                                                                                                                                     
  |========================================================================================================                                                                                                       |  50%
  |                                                                                                                                                                                                                     
  |===============================================================================================================================================================================================================| 100%
[1] "Running PCA..."
[1] "Calculating PC distance matrix..."
[1] "Computing pANN..."
[1] "Classifying doublets.."

Doublet Singlet 
    134    3691 
[1] "Processing sample: 11"
[1] 55357  6820
[1] "Creating artificial doublets for pN = 5%"
[1] "Creating Seurat object..."
[1] "Normalizing Seurat object..."
Normalizing layer: counts
Performing log-normalization
0%   10   20   30   40   50   60   70   80   90   100%
[----|----|----|----|----|----|----|----|----|----|
**************************************************|
[1] "Finding variable genes..."
Finding variable features for layer counts
Calculating gene variances
0%   10   20   30   40   50   60   70   80   90   100%
[----|----|----|----|----|----|----|----|----|----|
**************************************************|
Calculating feature variances of standardized and clipped values
0%   10   20   30   40   50   60   70   80   90   100%
[----|----|----|----|----|----|----|----|----|----|
**************************************************|
[1] "Scaling data..."
Centering and scaling data matrix

  |                                                                                                                                                                                                                     
  |                                                                                                                                                                                                               |   0%
  |                                                                                                                                                                                                                     
  |========================================================================================================                                                                                                       |  50%
  |                                                                                                                                                                                                                     
  |===============================================================================================================================================================================================================| 100%
[1] "Running PCA..."
[1] "Calculating PC distance matrix..."
[1] "Defining neighborhoods..."
[1] "Computing pANN across all pK..."
[1] "pK = 0.005..."
[1] "pK = 0.01..."
[1] "pK = 0.02..."
[1] "pK = 0.03..."
[1] "pK = 0.04..."
[1] "pK = 0.05..."
[1] "pK = 0.06..."
[1] "pK = 0.07..."
[1] "pK = 0.08..."
[1] "pK = 0.09..."
[1] "pK = 0.1..."
[1] "pK = 0.11..."
[1] "pK = 0.12..."
[1] "pK = 0.13..."
[1] "pK = 0.14..."
[1] "pK = 0.15..."
[1] "pK = 0.16..."
[1] "pK = 0.17..."
[1] "pK = 0.18..."
[1] "pK = 0.19..."
[1] "pK = 0.2..."
[1] "pK = 0.21..."
[1] "pK = 0.22..."
[1] "pK = 0.23..."
[1] "pK = 0.24..."
[1] "pK = 0.25..."
[1] "pK = 0.26..."
[1] "pK = 0.27..."
[1] "pK = 0.28..."
[1] "pK = 0.29..."
[1] "pK = 0.3..."
[1] "Creating artificial doublets for pN = 10%"
[1] "Creating Seurat object..."
[1] "Normalizing Seurat object..."
Normalizing layer: counts
Performing log-normalization
0%   10   20   30   40   50   60   70   80   90   100%
[----|----|----|----|----|----|----|----|----|----|
**************************************************|
[1] "Finding variable genes..."
Finding variable features for layer counts
Calculating gene variances
0%   10   20   30   40   50   60   70   80   90   100%
[----|----|----|----|----|----|----|----|----|----|
**************************************************|
Calculating feature variances of standardized and clipped values
0%   10   20   30   40   50   60   70   80   90   100%
[----|----|----|----|----|----|----|----|----|----|
**************************************************|
[1] "Scaling data..."
Centering and scaling data matrix

  |                                                                                                                                                                                                                     
  |                                                                                                                                                                                                               |   0%
  |                                                                                                                                                                                                                     
  |========================================================================================================                                                                                                       |  50%
  |                                                                                                                                                                                                                     
  |===============================================================================================================================================================================================================| 100%
[1] "Running PCA..."
[1] "Calculating PC distance matrix..."
[1] "Defining neighborhoods..."
[1] "Computing pANN across all pK..."
[1] "pK = 0.005..."
[1] "pK = 0.01..."
[1] "pK = 0.02..."
[1] "pK = 0.03..."
[1] "pK = 0.04..."
[1] "pK = 0.05..."
[1] "pK = 0.06..."
[1] "pK = 0.07..."
[1] "pK = 0.08..."
[1] "pK = 0.09..."
[1] "pK = 0.1..."
[1] "pK = 0.11..."
[1] "pK = 0.12..."
[1] "pK = 0.13..."
[1] "pK = 0.14..."
[1] "pK = 0.15..."
[1] "pK = 0.16..."
[1] "pK = 0.17..."
[1] "pK = 0.18..."
[1] "pK = 0.19..."
[1] "pK = 0.2..."
[1] "pK = 0.21..."
[1] "pK = 0.22..."
[1] "pK = 0.23..."
[1] "pK = 0.24..."
[1] "pK = 0.25..."
[1] "pK = 0.26..."
[1] "pK = 0.27..."
[1] "pK = 0.28..."
[1] "pK = 0.29..."
[1] "pK = 0.3..."
[1] "Creating artificial doublets for pN = 15%"
[1] "Creating Seurat object..."
[1] "Normalizing Seurat object..."
Normalizing layer: counts
Performing log-normalization
0%   10   20   30   40   50   60   70   80   90   100%
[----|----|----|----|----|----|----|----|----|----|
**************************************************|
[1] "Finding variable genes..."
Finding variable features for layer counts
Calculating gene variances
0%   10   20   30   40   50   60   70   80   90   100%
[----|----|----|----|----|----|----|----|----|----|
**************************************************|
Calculating feature variances of standardized and clipped values
0%   10   20   30   40   50   60   70   80   90   100%
[----|----|----|----|----|----|----|----|----|----|
**************************************************|
[1] "Scaling data..."
Centering and scaling data matrix

  |                                                                                                                                                                                                                     
  |                                                                                                                                                                                                               |   0%
  |                                                                                                                                                                                                                     
  |========================================================================================================                                                                                                       |  50%
  |                                                                                                                                                                                                                     
  |===============================================================================================================================================================================================================| 100%
[1] "Running PCA..."
[1] "Calculating PC distance matrix..."
[1] "Defining neighborhoods..."
[1] "Computing pANN across all pK..."
[1] "pK = 0.005..."
[1] "pK = 0.01..."
[1] "pK = 0.02..."
[1] "pK = 0.03..."
[1] "pK = 0.04..."
[1] "pK = 0.05..."
[1] "pK = 0.06..."
[1] "pK = 0.07..."
[1] "pK = 0.08..."
[1] "pK = 0.09..."
[1] "pK = 0.1..."
[1] "pK = 0.11..."
[1] "pK = 0.12..."
[1] "pK = 0.13..."
[1] "pK = 0.14..."
[1] "pK = 0.15..."
[1] "pK = 0.16..."
[1] "pK = 0.17..."
[1] "pK = 0.18..."
[1] "pK = 0.19..."
[1] "pK = 0.2..."
[1] "pK = 0.21..."
[1] "pK = 0.22..."
[1] "pK = 0.23..."
[1] "pK = 0.24..."
[1] "pK = 0.25..."
[1] "pK = 0.26..."
[1] "pK = 0.27..."
[1] "pK = 0.28..."
[1] "pK = 0.29..."
[1] "pK = 0.3..."
[1] "Creating artificial doublets for pN = 20%"
[1] "Creating Seurat object..."
[1] "Normalizing Seurat object..."
Normalizing layer: counts
Performing log-normalization
0%   10   20   30   40   50   60   70   80   90   100%
[----|----|----|----|----|----|----|----|----|----|
**************************************************|
[1] "Finding variable genes..."
Finding variable features for layer counts
Calculating gene variances
0%   10   20   30   40   50   60   70   80   90   100%
[----|----|----|----|----|----|----|----|----|----|
**************************************************|
Calculating feature variances of standardized and clipped values
0%   10   20   30   40   50   60   70   80   90   100%
[----|----|----|----|----|----|----|----|----|----|
**************************************************|
[1] "Scaling data..."
Centering and scaling data matrix

  |                                                                                                                                                                                                                     
  |                                                                                                                                                                                                               |   0%
  |                                                                                                                                                                                                                     
  |========================================================================================================                                                                                                       |  50%
  |                                                                                                                                                                                                                     
  |===============================================================================================================================================================================================================| 100%
[1] "Running PCA..."
[1] "Calculating PC distance matrix..."
[1] "Defining neighborhoods..."
[1] "Computing pANN across all pK..."
[1] "pK = 0.005..."
[1] "pK = 0.01..."
[1] "pK = 0.02..."
[1] "pK = 0.03..."
[1] "pK = 0.04..."
[1] "pK = 0.05..."
[1] "pK = 0.06..."
[1] "pK = 0.07..."
[1] "pK = 0.08..."
[1] "pK = 0.09..."
[1] "pK = 0.1..."
[1] "pK = 0.11..."
[1] "pK = 0.12..."
[1] "pK = 0.13..."
[1] "pK = 0.14..."
[1] "pK = 0.15..."
[1] "pK = 0.16..."
[1] "pK = 0.17..."
[1] "pK = 0.18..."
[1] "pK = 0.19..."
[1] "pK = 0.2..."
[1] "pK = 0.21..."
[1] "pK = 0.22..."
[1] "pK = 0.23..."
[1] "pK = 0.24..."
[1] "pK = 0.25..."
[1] "pK = 0.26..."
[1] "pK = 0.27..."
[1] "pK = 0.28..."
[1] "pK = 0.29..."
[1] "pK = 0.3..."
[1] "Creating artificial doublets for pN = 25%"
[1] "Creating Seurat object..."
[1] "Normalizing Seurat object..."
Normalizing layer: counts
Performing log-normalization
0%   10   20   30   40   50   60   70   80   90   100%
[----|----|----|----|----|----|----|----|----|----|
**************************************************|
[1] "Finding variable genes..."
Finding variable features for layer counts
Calculating gene variances
0%   10   20   30   40   50   60   70   80   90   100%
[----|----|----|----|----|----|----|----|----|----|
**************************************************|
Calculating feature variances of standardized and clipped values
0%   10   20   30   40   50   60   70   80   90   100%
[----|----|----|----|----|----|----|----|----|----|
**************************************************|
[1] "Scaling data..."
Centering and scaling data matrix

  |                                                                                                                                                                                                                     
  |                                                                                                                                                                                                               |   0%
  |                                                                                                                                                                                                                     
  |========================================================================================================                                                                                                       |  50%
  |                                                                                                                                                                                                                     
  |===============================================================================================================================================================================================================| 100%
[1] "Running PCA..."
[1] "Calculating PC distance matrix..."
[1] "Defining neighborhoods..."
[1] "Computing pANN across all pK..."
[1] "pK = 0.005..."
[1] "pK = 0.01..."
[1] "pK = 0.02..."
[1] "pK = 0.03..."
[1] "pK = 0.04..."
[1] "pK = 0.05..."
[1] "pK = 0.06..."
[1] "pK = 0.07..."
[1] "pK = 0.08..."
[1] "pK = 0.09..."
[1] "pK = 0.1..."
[1] "pK = 0.11..."
[1] "pK = 0.12..."
[1] "pK = 0.13..."
[1] "pK = 0.14..."
[1] "pK = 0.15..."
[1] "pK = 0.16..."
[1] "pK = 0.17..."
[1] "pK = 0.18..."
[1] "pK = 0.19..."
[1] "pK = 0.2..."
[1] "pK = 0.21..."
[1] "pK = 0.22..."
[1] "pK = 0.23..."
[1] "pK = 0.24..."
[1] "pK = 0.25..."
[1] "pK = 0.26..."
[1] "pK = 0.27..."
[1] "pK = 0.28..."
[1] "pK = 0.29..."
[1] "pK = 0.3..."
[1] "Creating artificial doublets for pN = 30%"
[1] "Creating Seurat object..."
[1] "Normalizing Seurat object..."
Normalizing layer: counts
Performing log-normalization
0%   10   20   30   40   50   60   70   80   90   100%
[----|----|----|----|----|----|----|----|----|----|
**************************************************|
[1] "Finding variable genes..."
Finding variable features for layer counts
Calculating gene variances
0%   10   20   30   40   50   60   70   80   90   100%
[----|----|----|----|----|----|----|----|----|----|
**************************************************|
Calculating feature variances of standardized and clipped values
0%   10   20   30   40   50   60   70   80   90   100%
[----|----|----|----|----|----|----|----|----|----|
**************************************************|
[1] "Scaling data..."
Centering and scaling data matrix

  |                                                                                                                                                                                                                     
  |                                                                                                                                                                                                               |   0%
  |                                                                                                                                                                                                                     
  |========================================================================================================                                                                                                       |  50%
  |                                                                                                                                                                                                                     
  |===============================================================================================================================================================================================================| 100%
[1] "Running PCA..."
[1] "Calculating PC distance matrix..."
[1] "Defining neighborhoods..."
[1] "Computing pANN across all pK..."
[1] "pK = 0.005..."
[1] "pK = 0.01..."
[1] "pK = 0.02..."
[1] "pK = 0.03..."
[1] "pK = 0.04..."
[1] "pK = 0.05..."
[1] "pK = 0.06..."
[1] "pK = 0.07..."
[1] "pK = 0.08..."
[1] "pK = 0.09..."
[1] "pK = 0.1..."
[1] "pK = 0.11..."
[1] "pK = 0.12..."
[1] "pK = 0.13..."
[1] "pK = 0.14..."
[1] "pK = 0.15..."
[1] "pK = 0.16..."
[1] "pK = 0.17..."
[1] "pK = 0.18..."
[1] "pK = 0.19..."
[1] "pK = 0.2..."
[1] "pK = 0.21..."
[1] "pK = 0.22..."
[1] "pK = 0.23..."
[1] "pK = 0.24..."
[1] "pK = 0.25..."
[1] "pK = 0.26..."
[1] "pK = 0.27..."
[1] "pK = 0.28..."
[1] "pK = 0.29..."
[1] "pK = 0.3..."

NULL
[1] "Selected pK: 0.005"
[1] "Creating 1705 artificial doublets..."
[1] "Creating Seurat object..."
[1] "Normalizing Seurat object..."
Normalizing layer: counts
Performing log-normalization
0%   10   20   30   40   50   60   70   80   90   100%
[----|----|----|----|----|----|----|----|----|----|
**************************************************|
[1] "Finding variable genes..."
Finding variable features for layer counts
Calculating gene variances
0%   10   20   30   40   50   60   70   80   90   100%
[----|----|----|----|----|----|----|----|----|----|
**************************************************|
Calculating feature variances of standardized and clipped values
0%   10   20   30   40   50   60   70   80   90   100%
[----|----|----|----|----|----|----|----|----|----|
**************************************************|
[1] "Scaling data..."
Centering and scaling data matrix

  |                                                                                                                                                                                                                     
  |                                                                                                                                                                                                               |   0%
  |                                                                                                                                                                                                                     
  |========================================================================================================                                                                                                       |  50%
  |                                                                                                                                                                                                                     
  |===============================================================================================================================================================================================================| 100%
[1] "Running PCA..."
[1] "Calculating PC distance matrix..."
[1] "Computing pANN..."
[1] "Classifying doublets.."

Doublet Singlet 
    239    6581 
[1] "Processing sample: 12"
[1] 55357  3713
[1] "Creating artificial doublets for pN = 5%"
[1] "Creating Seurat object..."
[1] "Normalizing Seurat object..."
Normalizing layer: counts
Performing log-normalization
0%   10   20   30   40   50   60   70   80   90   100%
[----|----|----|----|----|----|----|----|----|----|
**************************************************|
[1] "Finding variable genes..."
Finding variable features for layer counts
Calculating gene variances
0%   10   20   30   40   50   60   70   80   90   100%
[----|----|----|----|----|----|----|----|----|----|
**************************************************|
Calculating feature variances of standardized and clipped values
0%   10   20   30   40   50   60   70   80   90   100%
[----|----|----|----|----|----|----|----|----|----|
**************************************************|
[1] "Scaling data..."
Centering and scaling data matrix

  |                                                                                                                                                                                                                     
  |                                                                                                                                                                                                               |   0%
  |                                                                                                                                                                                                                     
  |========================================================================================================                                                                                                       |  50%
  |                                                                                                                                                                                                                     
  |===============================================================================================================================================================================================================| 100%
[1] "Running PCA..."
[1] "Calculating PC distance matrix..."
[1] "Defining neighborhoods..."
[1] "Computing pANN across all pK..."
[1] "pK = 0.005..."
[1] "pK = 0.01..."
[1] "pK = 0.02..."
[1] "pK = 0.03..."
[1] "pK = 0.04..."
[1] "pK = 0.05..."
[1] "pK = 0.06..."
[1] "pK = 0.07..."
[1] "pK = 0.08..."
[1] "pK = 0.09..."
[1] "pK = 0.1..."
[1] "pK = 0.11..."
[1] "pK = 0.12..."
[1] "pK = 0.13..."
[1] "pK = 0.14..."
[1] "pK = 0.15..."
[1] "pK = 0.16..."
[1] "pK = 0.17..."
[1] "pK = 0.18..."
[1] "pK = 0.19..."
[1] "pK = 0.2..."
[1] "pK = 0.21..."
[1] "pK = 0.22..."
[1] "pK = 0.23..."
[1] "pK = 0.24..."
[1] "pK = 0.25..."
[1] "pK = 0.26..."
[1] "pK = 0.27..."
[1] "pK = 0.28..."
[1] "pK = 0.29..."
[1] "pK = 0.3..."
[1] "Creating artificial doublets for pN = 10%"
[1] "Creating Seurat object..."
[1] "Normalizing Seurat object..."
Normalizing layer: counts
Performing log-normalization
0%   10   20   30   40   50   60   70   80   90   100%
[----|----|----|----|----|----|----|----|----|----|
**************************************************|
[1] "Finding variable genes..."
Finding variable features for layer counts
Calculating gene variances
0%   10   20   30   40   50   60   70   80   90   100%
[----|----|----|----|----|----|----|----|----|----|
**************************************************|
Calculating feature variances of standardized and clipped values
0%   10   20   30   40   50   60   70   80   90   100%
[----|----|----|----|----|----|----|----|----|----|
**************************************************|
[1] "Scaling data..."
Centering and scaling data matrix

  |                                                                                                                                                                                                                     
  |                                                                                                                                                                                                               |   0%
  |                                                                                                                                                                                                                     
  |========================================================================================================                                                                                                       |  50%
  |                                                                                                                                                                                                                     
  |===============================================================================================================================================================================================================| 100%
[1] "Running PCA..."
[1] "Calculating PC distance matrix..."
[1] "Defining neighborhoods..."
[1] "Computing pANN across all pK..."
[1] "pK = 0.005..."
[1] "pK = 0.01..."
[1] "pK = 0.02..."
[1] "pK = 0.03..."
[1] "pK = 0.04..."
[1] "pK = 0.05..."
[1] "pK = 0.06..."
[1] "pK = 0.07..."
[1] "pK = 0.08..."
[1] "pK = 0.09..."
[1] "pK = 0.1..."
[1] "pK = 0.11..."
[1] "pK = 0.12..."
[1] "pK = 0.13..."
[1] "pK = 0.14..."
[1] "pK = 0.15..."
[1] "pK = 0.16..."
[1] "pK = 0.17..."
[1] "pK = 0.18..."
[1] "pK = 0.19..."
[1] "pK = 0.2..."
[1] "pK = 0.21..."
[1] "pK = 0.22..."
[1] "pK = 0.23..."
[1] "pK = 0.24..."
[1] "pK = 0.25..."
[1] "pK = 0.26..."
[1] "pK = 0.27..."
[1] "pK = 0.28..."
[1] "pK = 0.29..."
[1] "pK = 0.3..."
[1] "Creating artificial doublets for pN = 15%"
[1] "Creating Seurat object..."
[1] "Normalizing Seurat object..."
Normalizing layer: counts
Performing log-normalization
0%   10   20   30   40   50   60   70   80   90   100%
[----|----|----|----|----|----|----|----|----|----|
**************************************************|
[1] "Finding variable genes..."
Finding variable features for layer counts
Calculating gene variances
0%   10   20   30   40   50   60   70   80   90   100%
[----|----|----|----|----|----|----|----|----|----|
**************************************************|
Calculating feature variances of standardized and clipped values
0%   10   20   30   40   50   60   70   80   90   100%
[----|----|----|----|----|----|----|----|----|----|
**************************************************|
[1] "Scaling data..."
Centering and scaling data matrix

  |                                                                                                                                                                                                                     
  |                                                                                                                                                                                                               |   0%
  |                                                                                                                                                                                                                     
  |========================================================================================================                                                                                                       |  50%
  |                                                                                                                                                                                                                     
  |===============================================================================================================================================================================================================| 100%
[1] "Running PCA..."
[1] "Calculating PC distance matrix..."
[1] "Defining neighborhoods..."
[1] "Computing pANN across all pK..."
[1] "pK = 0.005..."
[1] "pK = 0.01..."
[1] "pK = 0.02..."
[1] "pK = 0.03..."
[1] "pK = 0.04..."
[1] "pK = 0.05..."
[1] "pK = 0.06..."
[1] "pK = 0.07..."
[1] "pK = 0.08..."
[1] "pK = 0.09..."
[1] "pK = 0.1..."
[1] "pK = 0.11..."
[1] "pK = 0.12..."
[1] "pK = 0.13..."
[1] "pK = 0.14..."
[1] "pK = 0.15..."
[1] "pK = 0.16..."
[1] "pK = 0.17..."
[1] "pK = 0.18..."
[1] "pK = 0.19..."
[1] "pK = 0.2..."
[1] "pK = 0.21..."
[1] "pK = 0.22..."
[1] "pK = 0.23..."
[1] "pK = 0.24..."
[1] "pK = 0.25..."
[1] "pK = 0.26..."
[1] "pK = 0.27..."
[1] "pK = 0.28..."
[1] "pK = 0.29..."
[1] "pK = 0.3..."
[1] "Creating artificial doublets for pN = 20%"
[1] "Creating Seurat object..."
[1] "Normalizing Seurat object..."
Normalizing layer: counts
Performing log-normalization
0%   10   20   30   40   50   60   70   80   90   100%
[----|----|----|----|----|----|----|----|----|----|
**************************************************|
[1] "Finding variable genes..."
Finding variable features for layer counts
Calculating gene variances
0%   10   20   30   40   50   60   70   80   90   100%
[----|----|----|----|----|----|----|----|----|----|
**************************************************|
Calculating feature variances of standardized and clipped values
0%   10   20   30   40   50   60   70   80   90   100%
[----|----|----|----|----|----|----|----|----|----|
**************************************************|
[1] "Scaling data..."
Centering and scaling data matrix

  |                                                                                                                                                                                                                     
  |                                                                                                                                                                                                               |   0%
  |                                                                                                                                                                                                                     
  |========================================================================================================                                                                                                       |  50%
  |                                                                                                                                                                                                                     
  |===============================================================================================================================================================================================================| 100%
[1] "Running PCA..."
[1] "Calculating PC distance matrix..."
[1] "Defining neighborhoods..."
[1] "Computing pANN across all pK..."
[1] "pK = 0.005..."
[1] "pK = 0.01..."
[1] "pK = 0.02..."
[1] "pK = 0.03..."
[1] "pK = 0.04..."
[1] "pK = 0.05..."
[1] "pK = 0.06..."
[1] "pK = 0.07..."
[1] "pK = 0.08..."
[1] "pK = 0.09..."
[1] "pK = 0.1..."
[1] "pK = 0.11..."
[1] "pK = 0.12..."
[1] "pK = 0.13..."
[1] "pK = 0.14..."
[1] "pK = 0.15..."
[1] "pK = 0.16..."
[1] "pK = 0.17..."
[1] "pK = 0.18..."
[1] "pK = 0.19..."
[1] "pK = 0.2..."
[1] "pK = 0.21..."
[1] "pK = 0.22..."
[1] "pK = 0.23..."
[1] "pK = 0.24..."
[1] "pK = 0.25..."
[1] "pK = 0.26..."
[1] "pK = 0.27..."
[1] "pK = 0.28..."
[1] "pK = 0.29..."
[1] "pK = 0.3..."
[1] "Creating artificial doublets for pN = 25%"
[1] "Creating Seurat object..."
[1] "Normalizing Seurat object..."
Normalizing layer: counts
Performing log-normalization
0%   10   20   30   40   50   60   70   80   90   100%
[----|----|----|----|----|----|----|----|----|----|
**************************************************|
[1] "Finding variable genes..."
Finding variable features for layer counts
Calculating gene variances
0%   10   20   30   40   50   60   70   80   90   100%
[----|----|----|----|----|----|----|----|----|----|
**************************************************|
Calculating feature variances of standardized and clipped values
0%   10   20   30   40   50   60   70   80   90   100%
[----|----|----|----|----|----|----|----|----|----|
**************************************************|
[1] "Scaling data..."
Centering and scaling data matrix

  |                                                                                                                                                                                                                     
  |                                                                                                                                                                                                               |   0%
  |                                                                                                                                                                                                                     
  |========================================================================================================                                                                                                       |  50%
  |                                                                                                                                                                                                                     
  |===============================================================================================================================================================================================================| 100%
[1] "Running PCA..."
[1] "Calculating PC distance matrix..."
[1] "Defining neighborhoods..."
[1] "Computing pANN across all pK..."
[1] "pK = 0.005..."
[1] "pK = 0.01..."
[1] "pK = 0.02..."
[1] "pK = 0.03..."
[1] "pK = 0.04..."
[1] "pK = 0.05..."
[1] "pK = 0.06..."
[1] "pK = 0.07..."
[1] "pK = 0.08..."
[1] "pK = 0.09..."
[1] "pK = 0.1..."
[1] "pK = 0.11..."
[1] "pK = 0.12..."
[1] "pK = 0.13..."
[1] "pK = 0.14..."
[1] "pK = 0.15..."
[1] "pK = 0.16..."
[1] "pK = 0.17..."
[1] "pK = 0.18..."
[1] "pK = 0.19..."
[1] "pK = 0.2..."
[1] "pK = 0.21..."
[1] "pK = 0.22..."
[1] "pK = 0.23..."
[1] "pK = 0.24..."
[1] "pK = 0.25..."
[1] "pK = 0.26..."
[1] "pK = 0.27..."
[1] "pK = 0.28..."
[1] "pK = 0.29..."
[1] "pK = 0.3..."
[1] "Creating artificial doublets for pN = 30%"
[1] "Creating Seurat object..."
[1] "Normalizing Seurat object..."
Normalizing layer: counts
Performing log-normalization
0%   10   20   30   40   50   60   70   80   90   100%
[----|----|----|----|----|----|----|----|----|----|
**************************************************|
[1] "Finding variable genes..."
Finding variable features for layer counts
Calculating gene variances
0%   10   20   30   40   50   60   70   80   90   100%
[----|----|----|----|----|----|----|----|----|----|
**************************************************|
Calculating feature variances of standardized and clipped values
0%   10   20   30   40   50   60   70   80   90   100%
[----|----|----|----|----|----|----|----|----|----|
**************************************************|
[1] "Scaling data..."
Centering and scaling data matrix

  |                                                                                                                                                                                                                     
  |                                                                                                                                                                                                               |   0%
  |                                                                                                                                                                                                                     
  |========================================================================================================                                                                                                       |  50%
  |                                                                                                                                                                                                                     
  |===============================================================================================================================================================================================================| 100%
[1] "Running PCA..."
[1] "Calculating PC distance matrix..."
[1] "Defining neighborhoods..."
[1] "Computing pANN across all pK..."
[1] "pK = 0.005..."
[1] "pK = 0.01..."
[1] "pK = 0.02..."
[1] "pK = 0.03..."
[1] "pK = 0.04..."
[1] "pK = 0.05..."
[1] "pK = 0.06..."
[1] "pK = 0.07..."
[1] "pK = 0.08..."
[1] "pK = 0.09..."
[1] "pK = 0.1..."
[1] "pK = 0.11..."
[1] "pK = 0.12..."
[1] "pK = 0.13..."
[1] "pK = 0.14..."
[1] "pK = 0.15..."
[1] "pK = 0.16..."
[1] "pK = 0.17..."
[1] "pK = 0.18..."
[1] "pK = 0.19..."
[1] "pK = 0.2..."
[1] "pK = 0.21..."
[1] "pK = 0.22..."
[1] "pK = 0.23..."
[1] "pK = 0.24..."
[1] "pK = 0.25..."
[1] "pK = 0.26..."
[1] "pK = 0.27..."
[1] "pK = 0.28..."
[1] "pK = 0.29..."
[1] "pK = 0.3..."

NULL
[1] "Selected pK: 0.005"
[1] "Creating 928 artificial doublets..."
[1] "Creating Seurat object..."
[1] "Normalizing Seurat object..."
Normalizing layer: counts
Performing log-normalization
0%   10   20   30   40   50   60   70   80   90   100%
[----|----|----|----|----|----|----|----|----|----|
**************************************************|
[1] "Finding variable genes..."
Finding variable features for layer counts
Calculating gene variances
0%   10   20   30   40   50   60   70   80   90   100%
[----|----|----|----|----|----|----|----|----|----|
**************************************************|
Calculating feature variances of standardized and clipped values
0%   10   20   30   40   50   60   70   80   90   100%
[----|----|----|----|----|----|----|----|----|----|
**************************************************|
[1] "Scaling data..."
Centering and scaling data matrix

  |                                                                                                                                                                                                                     
  |                                                                                                                                                                                                               |   0%
  |                                                                                                                                                                                                                     
  |========================================================================================================                                                                                                       |  50%
  |                                                                                                                                                                                                                     
  |===============================================================================================================================================================================================================| 100%
[1] "Running PCA..."
[1] "Calculating PC distance matrix..."
[1] "Computing pANN..."
[1] "Classifying doublets.."

Doublet Singlet 
    130    3583 
[1] "Processing sample: 13"
[1] 55357  5575
[1] "Creating artificial doublets for pN = 5%"
[1] "Creating Seurat object..."
[1] "Normalizing Seurat object..."
Normalizing layer: counts
Performing log-normalization
0%   10   20   30   40   50   60   70   80   90   100%
[----|----|----|----|----|----|----|----|----|----|
**************************************************|
[1] "Finding variable genes..."
Finding variable features for layer counts
Calculating gene variances
0%   10   20   30   40   50   60   70   80   90   100%
[----|----|----|----|----|----|----|----|----|----|
**************************************************|
Calculating feature variances of standardized and clipped values
0%   10   20   30   40   50   60   70   80   90   100%
[----|----|----|----|----|----|----|----|----|----|
**************************************************|
[1] "Scaling data..."
Centering and scaling data matrix

  |                                                                                                                                                                                                                     
  |                                                                                                                                                                                                               |   0%
  |                                                                                                                                                                                                                     
  |========================================================================================================                                                                                                       |  50%
  |                                                                                                                                                                                                                     
  |===============================================================================================================================================================================================================| 100%
[1] "Running PCA..."
[1] "Calculating PC distance matrix..."
[1] "Defining neighborhoods..."
[1] "Computing pANN across all pK..."
[1] "pK = 0.005..."
[1] "pK = 0.01..."
[1] "pK = 0.02..."
[1] "pK = 0.03..."
[1] "pK = 0.04..."
[1] "pK = 0.05..."
[1] "pK = 0.06..."
[1] "pK = 0.07..."
[1] "pK = 0.08..."
[1] "pK = 0.09..."
[1] "pK = 0.1..."
[1] "pK = 0.11..."
[1] "pK = 0.12..."
[1] "pK = 0.13..."
[1] "pK = 0.14..."
[1] "pK = 0.15..."
[1] "pK = 0.16..."
[1] "pK = 0.17..."
[1] "pK = 0.18..."
[1] "pK = 0.19..."
[1] "pK = 0.2..."
[1] "pK = 0.21..."
[1] "pK = 0.22..."
[1] "pK = 0.23..."
[1] "pK = 0.24..."
[1] "pK = 0.25..."
[1] "pK = 0.26..."
[1] "pK = 0.27..."
[1] "pK = 0.28..."
[1] "pK = 0.29..."
[1] "pK = 0.3..."
[1] "Creating artificial doublets for pN = 10%"
[1] "Creating Seurat object..."
[1] "Normalizing Seurat object..."
Normalizing layer: counts
Performing log-normalization
0%   10   20   30   40   50   60   70   80   90   100%
[----|----|----|----|----|----|----|----|----|----|
**************************************************|
[1] "Finding variable genes..."
Finding variable features for layer counts
Calculating gene variances
0%   10   20   30   40   50   60   70   80   90   100%
[----|----|----|----|----|----|----|----|----|----|
**************************************************|
Calculating feature variances of standardized and clipped values
0%   10   20   30   40   50   60   70   80   90   100%
[----|----|----|----|----|----|----|----|----|----|
**************************************************|
[1] "Scaling data..."
Centering and scaling data matrix

  |                                                                                                                                                                                                                     
  |                                                                                                                                                                                                               |   0%
  |                                                                                                                                                                                                                     
  |========================================================================================================                                                                                                       |  50%
  |                                                                                                                                                                                                                     
  |===============================================================================================================================================================================================================| 100%
[1] "Running PCA..."
[1] "Calculating PC distance matrix..."
[1] "Defining neighborhoods..."
[1] "Computing pANN across all pK..."
[1] "pK = 0.005..."
[1] "pK = 0.01..."
[1] "pK = 0.02..."
[1] "pK = 0.03..."
[1] "pK = 0.04..."
[1] "pK = 0.05..."
[1] "pK = 0.06..."
[1] "pK = 0.07..."
[1] "pK = 0.08..."
[1] "pK = 0.09..."
[1] "pK = 0.1..."
[1] "pK = 0.11..."
[1] "pK = 0.12..."
[1] "pK = 0.13..."
[1] "pK = 0.14..."
[1] "pK = 0.15..."
[1] "pK = 0.16..."
[1] "pK = 0.17..."
[1] "pK = 0.18..."
[1] "pK = 0.19..."
[1] "pK = 0.2..."
[1] "pK = 0.21..."
[1] "pK = 0.22..."
[1] "pK = 0.23..."
[1] "pK = 0.24..."
[1] "pK = 0.25..."
[1] "pK = 0.26..."
[1] "pK = 0.27..."
[1] "pK = 0.28..."
[1] "pK = 0.29..."
[1] "pK = 0.3..."
[1] "Creating artificial doublets for pN = 15%"
[1] "Creating Seurat object..."
[1] "Normalizing Seurat object..."
Normalizing layer: counts
Performing log-normalization
0%   10   20   30   40   50   60   70   80   90   100%
[----|----|----|----|----|----|----|----|----|----|
**************************************************|
[1] "Finding variable genes..."
Finding variable features for layer counts
Calculating gene variances
0%   10   20   30   40   50   60   70   80   90   100%
[----|----|----|----|----|----|----|----|----|----|
**************************************************|
Calculating feature variances of standardized and clipped values
0%   10   20   30   40   50   60   70   80   90   100%
[----|----|----|----|----|----|----|----|----|----|
**************************************************|
[1] "Scaling data..."
Centering and scaling data matrix

  |                                                                                                                                                                                                                     
  |                                                                                                                                                                                                               |   0%
  |                                                                                                                                                                                                                     
  |========================================================================================================                                                                                                       |  50%
  |                                                                                                                                                                                                                     
  |===============================================================================================================================================================================================================| 100%
[1] "Running PCA..."
[1] "Calculating PC distance matrix..."
[1] "Defining neighborhoods..."
[1] "Computing pANN across all pK..."
[1] "pK = 0.005..."
[1] "pK = 0.01..."
[1] "pK = 0.02..."
[1] "pK = 0.03..."
[1] "pK = 0.04..."
[1] "pK = 0.05..."
[1] "pK = 0.06..."
[1] "pK = 0.07..."
[1] "pK = 0.08..."
[1] "pK = 0.09..."
[1] "pK = 0.1..."
[1] "pK = 0.11..."
[1] "pK = 0.12..."
[1] "pK = 0.13..."
[1] "pK = 0.14..."
[1] "pK = 0.15..."
[1] "pK = 0.16..."
[1] "pK = 0.17..."
[1] "pK = 0.18..."
[1] "pK = 0.19..."
[1] "pK = 0.2..."
[1] "pK = 0.21..."
[1] "pK = 0.22..."
[1] "pK = 0.23..."
[1] "pK = 0.24..."
[1] "pK = 0.25..."
[1] "pK = 0.26..."
[1] "pK = 0.27..."
[1] "pK = 0.28..."
[1] "pK = 0.29..."
[1] "pK = 0.3..."
[1] "Creating artificial doublets for pN = 20%"
[1] "Creating Seurat object..."
[1] "Normalizing Seurat object..."
Normalizing layer: counts
Performing log-normalization
0%   10   20   30   40   50   60   70   80   90   100%
[----|----|----|----|----|----|----|----|----|----|
**************************************************|
[1] "Finding variable genes..."
Finding variable features for layer counts
Calculating gene variances
0%   10   20   30   40   50   60   70   80   90   100%
[----|----|----|----|----|----|----|----|----|----|
**************************************************|
Calculating feature variances of standardized and clipped values
0%   10   20   30   40   50   60   70   80   90   100%
[----|----|----|----|----|----|----|----|----|----|
**************************************************|
[1] "Scaling data..."
Centering and scaling data matrix

  |                                                                                                                                                                                                                     
  |                                                                                                                                                                                                               |   0%
  |                                                                                                                                                                                                                     
  |========================================================================================================                                                                                                       |  50%
  |                                                                                                                                                                                                                     
  |===============================================================================================================================================================================================================| 100%
[1] "Running PCA..."
[1] "Calculating PC distance matrix..."
[1] "Defining neighborhoods..."
[1] "Computing pANN across all pK..."
[1] "pK = 0.005..."
[1] "pK = 0.01..."
[1] "pK = 0.02..."
[1] "pK = 0.03..."
[1] "pK = 0.04..."
[1] "pK = 0.05..."
[1] "pK = 0.06..."
[1] "pK = 0.07..."
[1] "pK = 0.08..."
[1] "pK = 0.09..."
[1] "pK = 0.1..."
[1] "pK = 0.11..."
[1] "pK = 0.12..."
[1] "pK = 0.13..."
[1] "pK = 0.14..."
[1] "pK = 0.15..."
[1] "pK = 0.16..."
[1] "pK = 0.17..."
[1] "pK = 0.18..."
[1] "pK = 0.19..."
[1] "pK = 0.2..."
[1] "pK = 0.21..."
[1] "pK = 0.22..."
[1] "pK = 0.23..."
[1] "pK = 0.24..."
[1] "pK = 0.25..."
[1] "pK = 0.26..."
[1] "pK = 0.27..."
[1] "pK = 0.28..."
[1] "pK = 0.29..."
[1] "pK = 0.3..."
[1] "Creating artificial doublets for pN = 25%"
[1] "Creating Seurat object..."
[1] "Normalizing Seurat object..."
Normalizing layer: counts
Performing log-normalization
0%   10   20   30   40   50   60   70   80   90   100%
[----|----|----|----|----|----|----|----|----|----|
**************************************************|
[1] "Finding variable genes..."
Finding variable features for layer counts
Calculating gene variances
0%   10   20   30   40   50   60   70   80   90   100%
[----|----|----|----|----|----|----|----|----|----|
**************************************************|
Calculating feature variances of standardized and clipped values
0%   10   20   30   40   50   60   70   80   90   100%
[----|----|----|----|----|----|----|----|----|----|
**************************************************|
[1] "Scaling data..."
Centering and scaling data matrix

  |                                                                                                                                                                                                                     
  |                                                                                                                                                                                                               |   0%
  |                                                                                                                                                                                                                     
  |========================================================================================================                                                                                                       |  50%
  |                                                                                                                                                                                                                     
  |===============================================================================================================================================================================================================| 100%
[1] "Running PCA..."
[1] "Calculating PC distance matrix..."
[1] "Defining neighborhoods..."
[1] "Computing pANN across all pK..."
[1] "pK = 0.005..."
[1] "pK = 0.01..."
[1] "pK = 0.02..."
[1] "pK = 0.03..."
[1] "pK = 0.04..."
[1] "pK = 0.05..."
[1] "pK = 0.06..."
[1] "pK = 0.07..."
[1] "pK = 0.08..."
[1] "pK = 0.09..."
[1] "pK = 0.1..."
[1] "pK = 0.11..."
[1] "pK = 0.12..."
[1] "pK = 0.13..."
[1] "pK = 0.14..."
[1] "pK = 0.15..."
[1] "pK = 0.16..."
[1] "pK = 0.17..."
[1] "pK = 0.18..."
[1] "pK = 0.19..."
[1] "pK = 0.2..."
[1] "pK = 0.21..."
[1] "pK = 0.22..."
[1] "pK = 0.23..."
[1] "pK = 0.24..."
[1] "pK = 0.25..."
[1] "pK = 0.26..."
[1] "pK = 0.27..."
[1] "pK = 0.28..."
[1] "pK = 0.29..."
[1] "pK = 0.3..."
[1] "Creating artificial doublets for pN = 30%"
[1] "Creating Seurat object..."
[1] "Normalizing Seurat object..."
Normalizing layer: counts
Performing log-normalization
0%   10   20   30   40   50   60   70   80   90   100%
[----|----|----|----|----|----|----|----|----|----|
**************************************************|
[1] "Finding variable genes..."
Finding variable features for layer counts
Calculating gene variances
0%   10   20   30   40   50   60   70   80   90   100%
[----|----|----|----|----|----|----|----|----|----|
**************************************************|
Calculating feature variances of standardized and clipped values
0%   10   20   30   40   50   60   70   80   90   100%
[----|----|----|----|----|----|----|----|----|----|
**************************************************|
[1] "Scaling data..."
Centering and scaling data matrix

  |                                                                                                                                                                                                                     
  |                                                                                                                                                                                                               |   0%
  |                                                                                                                                                                                                                     
  |========================================================================================================                                                                                                       |  50%
  |                                                                                                                                                                                                                     
  |===============================================================================================================================================================================================================| 100%
[1] "Running PCA..."
[1] "Calculating PC distance matrix..."
[1] "Defining neighborhoods..."
[1] "Computing pANN across all pK..."
[1] "pK = 0.005..."
[1] "pK = 0.01..."
[1] "pK = 0.02..."
[1] "pK = 0.03..."
[1] "pK = 0.04..."
[1] "pK = 0.05..."
[1] "pK = 0.06..."
[1] "pK = 0.07..."
[1] "pK = 0.08..."
[1] "pK = 0.09..."
[1] "pK = 0.1..."
[1] "pK = 0.11..."
[1] "pK = 0.12..."
[1] "pK = 0.13..."
[1] "pK = 0.14..."
[1] "pK = 0.15..."
[1] "pK = 0.16..."
[1] "pK = 0.17..."
[1] "pK = 0.18..."
[1] "pK = 0.19..."
[1] "pK = 0.2..."
[1] "pK = 0.21..."
[1] "pK = 0.22..."
[1] "pK = 0.23..."
[1] "pK = 0.24..."
[1] "pK = 0.25..."
[1] "pK = 0.26..."
[1] "pK = 0.27..."
[1] "pK = 0.28..."
[1] "pK = 0.29..."
[1] "pK = 0.3..."

NULL
[1] "Selected pK: 0.005"
[1] "Creating 1394 artificial doublets..."
[1] "Creating Seurat object..."
[1] "Normalizing Seurat object..."
Normalizing layer: counts
Performing log-normalization
0%   10   20   30   40   50   60   70   80   90   100%
[----|----|----|----|----|----|----|----|----|----|
**************************************************|
[1] "Finding variable genes..."
Finding variable features for layer counts
Calculating gene variances
0%   10   20   30   40   50   60   70   80   90   100%
[----|----|----|----|----|----|----|----|----|----|
**************************************************|
Calculating feature variances of standardized and clipped values
0%   10   20   30   40   50   60   70   80   90   100%
[----|----|----|----|----|----|----|----|----|----|
**************************************************|
[1] "Scaling data..."
Centering and scaling data matrix

  |                                                                                                                                                                                                                     
  |                                                                                                                                                                                                               |   0%
  |                                                                                                                                                                                                                     
  |========================================================================================================                                                                                                       |  50%
  |                                                                                                                                                                                                                     
  |===============================================================================================================================================================================================================| 100%
[1] "Running PCA..."
[1] "Calculating PC distance matrix..."
[1] "Computing pANN..."
[1] "Classifying doublets.."

Doublet Singlet 
    195    5380 
[1] "Processing sample: 14"
[1] 55357  5750
[1] "Creating artificial doublets for pN = 5%"
[1] "Creating Seurat object..."
[1] "Normalizing Seurat object..."
Normalizing layer: counts
Performing log-normalization
0%   10   20   30   40   50   60   70   80   90   100%
[----|----|----|----|----|----|----|----|----|----|
**************************************************|
[1] "Finding variable genes..."
Finding variable features for layer counts
Calculating gene variances
0%   10   20   30   40   50   60   70   80   90   100%
[----|----|----|----|----|----|----|----|----|----|
**************************************************|
Calculating feature variances of standardized and clipped values
0%   10   20   30   40   50   60   70   80   90   100%
[----|----|----|----|----|----|----|----|----|----|
**************************************************|
[1] "Scaling data..."
Centering and scaling data matrix

  |                                                                                                                                                                                                                     
  |                                                                                                                                                                                                               |   0%
  |                                                                                                                                                                                                                     
  |========================================================================================================                                                                                                       |  50%
  |                                                                                                                                                                                                                     
  |===============================================================================================================================================================================================================| 100%
[1] "Running PCA..."
[1] "Calculating PC distance matrix..."
[1] "Defining neighborhoods..."
[1] "Computing pANN across all pK..."
[1] "pK = 0.005..."
[1] "pK = 0.01..."
[1] "pK = 0.02..."
[1] "pK = 0.03..."
[1] "pK = 0.04..."
[1] "pK = 0.05..."
[1] "pK = 0.06..."
[1] "pK = 0.07..."
[1] "pK = 0.08..."
[1] "pK = 0.09..."
[1] "pK = 0.1..."
[1] "pK = 0.11..."
[1] "pK = 0.12..."
[1] "pK = 0.13..."
[1] "pK = 0.14..."
[1] "pK = 0.15..."
[1] "pK = 0.16..."
[1] "pK = 0.17..."
[1] "pK = 0.18..."
[1] "pK = 0.19..."
[1] "pK = 0.2..."
[1] "pK = 0.21..."
[1] "pK = 0.22..."
[1] "pK = 0.23..."
[1] "pK = 0.24..."
[1] "pK = 0.25..."
[1] "pK = 0.26..."
[1] "pK = 0.27..."
[1] "pK = 0.28..."
[1] "pK = 0.29..."
[1] "pK = 0.3..."
[1] "Creating artificial doublets for pN = 10%"
[1] "Creating Seurat object..."
[1] "Normalizing Seurat object..."
Normalizing layer: counts
Performing log-normalization
0%   10   20   30   40   50   60   70   80   90   100%
[----|----|----|----|----|----|----|----|----|----|
**************************************************|
[1] "Finding variable genes..."
Finding variable features for layer counts
Calculating gene variances
0%   10   20   30   40   50   60   70   80   90   100%
[----|----|----|----|----|----|----|----|----|----|
**************************************************|
Calculating feature variances of standardized and clipped values
0%   10   20   30   40   50   60   70   80   90   100%
[----|----|----|----|----|----|----|----|----|----|
**************************************************|
[1] "Scaling data..."
Centering and scaling data matrix

  |                                                                                                                                                                                                                     
  |                                                                                                                                                                                                               |   0%
  |                                                                                                                                                                                                                     
  |========================================================================================================                                                                                                       |  50%
  |                                                                                                                                                                                                                     
  |===============================================================================================================================================================================================================| 100%
[1] "Running PCA..."
[1] "Calculating PC distance matrix..."
[1] "Defining neighborhoods..."
[1] "Computing pANN across all pK..."
[1] "pK = 0.005..."
[1] "pK = 0.01..."
[1] "pK = 0.02..."
[1] "pK = 0.03..."
[1] "pK = 0.04..."
[1] "pK = 0.05..."
[1] "pK = 0.06..."
[1] "pK = 0.07..."
[1] "pK = 0.08..."
[1] "pK = 0.09..."
[1] "pK = 0.1..."
[1] "pK = 0.11..."
[1] "pK = 0.12..."
[1] "pK = 0.13..."
[1] "pK = 0.14..."
[1] "pK = 0.15..."
[1] "pK = 0.16..."
[1] "pK = 0.17..."
[1] "pK = 0.18..."
[1] "pK = 0.19..."
[1] "pK = 0.2..."
[1] "pK = 0.21..."
[1] "pK = 0.22..."
[1] "pK = 0.23..."
[1] "pK = 0.24..."
[1] "pK = 0.25..."
[1] "pK = 0.26..."
[1] "pK = 0.27..."
[1] "pK = 0.28..."
[1] "pK = 0.29..."
[1] "pK = 0.3..."
[1] "Creating artificial doublets for pN = 15%"
[1] "Creating Seurat object..."
[1] "Normalizing Seurat object..."
Normalizing layer: counts
Performing log-normalization
0%   10   20   30   40   50   60   70   80   90   100%
[----|----|----|----|----|----|----|----|----|----|
**************************************************|
[1] "Finding variable genes..."
Finding variable features for layer counts
Calculating gene variances
0%   10   20   30   40   50   60   70   80   90   100%
[----|----|----|----|----|----|----|----|----|----|
**************************************************|
Calculating feature variances of standardized and clipped values
0%   10   20   30   40   50   60   70   80   90   100%
[----|----|----|----|----|----|----|----|----|----|
**************************************************|
[1] "Scaling data..."
Centering and scaling data matrix

  |                                                                                                                                                                                                                     
  |                                                                                                                                                                                                               |   0%
  |                                                                                                                                                                                                                     
  |========================================================================================================                                                                                                       |  50%
  |                                                                                                                                                                                                                     
  |===============================================================================================================================================================================================================| 100%
[1] "Running PCA..."
[1] "Calculating PC distance matrix..."
[1] "Defining neighborhoods..."
[1] "Computing pANN across all pK..."
[1] "pK = 0.005..."
[1] "pK = 0.01..."
[1] "pK = 0.02..."
[1] "pK = 0.03..."
[1] "pK = 0.04..."
[1] "pK = 0.05..."
[1] "pK = 0.06..."
[1] "pK = 0.07..."
[1] "pK = 0.08..."
[1] "pK = 0.09..."
[1] "pK = 0.1..."
[1] "pK = 0.11..."
[1] "pK = 0.12..."
[1] "pK = 0.13..."
[1] "pK = 0.14..."
[1] "pK = 0.15..."
[1] "pK = 0.16..."
[1] "pK = 0.17..."
[1] "pK = 0.18..."
[1] "pK = 0.19..."
[1] "pK = 0.2..."
[1] "pK = 0.21..."
[1] "pK = 0.22..."
[1] "pK = 0.23..."
[1] "pK = 0.24..."
[1] "pK = 0.25..."
[1] "pK = 0.26..."
[1] "pK = 0.27..."
[1] "pK = 0.28..."
[1] "pK = 0.29..."
[1] "pK = 0.3..."
[1] "Creating artificial doublets for pN = 20%"
[1] "Creating Seurat object..."
[1] "Normalizing Seurat object..."
Normalizing layer: counts
Performing log-normalization
0%   10   20   30   40   50   60   70   80   90   100%
[----|----|----|----|----|----|----|----|----|----|
**************************************************|
[1] "Finding variable genes..."
Finding variable features for layer counts
Calculating gene variances
0%   10   20   30   40   50   60   70   80   90   100%
[----|----|----|----|----|----|----|----|----|----|
**************************************************|
Calculating feature variances of standardized and clipped values
0%   10   20   30   40   50   60   70   80   90   100%
[----|----|----|----|----|----|----|----|----|----|
**************************************************|
[1] "Scaling data..."
Centering and scaling data matrix

  |                                                                                                                                                                                                                     
  |                                                                                                                                                                                                               |   0%
  |                                                                                                                                                                                                                     
  |========================================================================================================                                                                                                       |  50%
  |                                                                                                                                                                                                                     
  |===============================================================================================================================================================================================================| 100%
[1] "Running PCA..."
[1] "Calculating PC distance matrix..."
[1] "Defining neighborhoods..."
[1] "Computing pANN across all pK..."
[1] "pK = 0.005..."
[1] "pK = 0.01..."
[1] "pK = 0.02..."
[1] "pK = 0.03..."
[1] "pK = 0.04..."
[1] "pK = 0.05..."
[1] "pK = 0.06..."
[1] "pK = 0.07..."
[1] "pK = 0.08..."
[1] "pK = 0.09..."
[1] "pK = 0.1..."
[1] "pK = 0.11..."
[1] "pK = 0.12..."
[1] "pK = 0.13..."
[1] "pK = 0.14..."
[1] "pK = 0.15..."
[1] "pK = 0.16..."
[1] "pK = 0.17..."
[1] "pK = 0.18..."
[1] "pK = 0.19..."
[1] "pK = 0.2..."
[1] "pK = 0.21..."
[1] "pK = 0.22..."
[1] "pK = 0.23..."
[1] "pK = 0.24..."
[1] "pK = 0.25..."
[1] "pK = 0.26..."
[1] "pK = 0.27..."
[1] "pK = 0.28..."
[1] "pK = 0.29..."
[1] "pK = 0.3..."
[1] "Creating artificial doublets for pN = 25%"
[1] "Creating Seurat object..."
[1] "Normalizing Seurat object..."
Normalizing layer: counts
Performing log-normalization
0%   10   20   30   40   50   60   70   80   90   100%
[----|----|----|----|----|----|----|----|----|----|
**************************************************|
[1] "Finding variable genes..."
Finding variable features for layer counts
Calculating gene variances
0%   10   20   30   40   50   60   70   80   90   100%
[----|----|----|----|----|----|----|----|----|----|
**************************************************|
Calculating feature variances of standardized and clipped values
0%   10   20   30   40   50   60   70   80   90   100%
[----|----|----|----|----|----|----|----|----|----|
**************************************************|
[1] "Scaling data..."
Centering and scaling data matrix

  |                                                                                                                                                                                                                     
  |                                                                                                                                                                                                               |   0%
  |                                                                                                                                                                                                                     
  |========================================================================================================                                                                                                       |  50%
  |                                                                                                                                                                                                                     
  |===============================================================================================================================================================================================================| 100%
[1] "Running PCA..."
[1] "Calculating PC distance matrix..."
[1] "Defining neighborhoods..."
[1] "Computing pANN across all pK..."
[1] "pK = 0.005..."
[1] "pK = 0.01..."
[1] "pK = 0.02..."
[1] "pK = 0.03..."
[1] "pK = 0.04..."
[1] "pK = 0.05..."
[1] "pK = 0.06..."
[1] "pK = 0.07..."
[1] "pK = 0.08..."
[1] "pK = 0.09..."
[1] "pK = 0.1..."
[1] "pK = 0.11..."
[1] "pK = 0.12..."
[1] "pK = 0.13..."
[1] "pK = 0.14..."
[1] "pK = 0.15..."
[1] "pK = 0.16..."
[1] "pK = 0.17..."
[1] "pK = 0.18..."
[1] "pK = 0.19..."
[1] "pK = 0.2..."
[1] "pK = 0.21..."
[1] "pK = 0.22..."
[1] "pK = 0.23..."
[1] "pK = 0.24..."
[1] "pK = 0.25..."
[1] "pK = 0.26..."
[1] "pK = 0.27..."
[1] "pK = 0.28..."
[1] "pK = 0.29..."
[1] "pK = 0.3..."
[1] "Creating artificial doublets for pN = 30%"
[1] "Creating Seurat object..."
[1] "Normalizing Seurat object..."
Normalizing layer: counts
Performing log-normalization
0%   10   20   30   40   50   60   70   80   90   100%
[----|----|----|----|----|----|----|----|----|----|
**************************************************|
[1] "Finding variable genes..."
Finding variable features for layer counts
Calculating gene variances
0%   10   20   30   40   50   60   70   80   90   100%
[----|----|----|----|----|----|----|----|----|----|
**************************************************|
Calculating feature variances of standardized and clipped values
0%   10   20   30   40   50   60   70   80   90   100%
[----|----|----|----|----|----|----|----|----|----|
**************************************************|
[1] "Scaling data..."
Centering and scaling data matrix

  |                                                                                                                                                                                                                     
  |                                                                                                                                                                                                               |   0%
  |                                                                                                                                                                                                                     
  |========================================================================================================                                                                                                       |  50%
  |                                                                                                                                                                                                                     
  |===============================================================================================================================================================================================================| 100%
[1] "Running PCA..."
[1] "Calculating PC distance matrix..."
[1] "Defining neighborhoods..."
[1] "Computing pANN across all pK..."
[1] "pK = 0.005..."
[1] "pK = 0.01..."
[1] "pK = 0.02..."
[1] "pK = 0.03..."
[1] "pK = 0.04..."
[1] "pK = 0.05..."
[1] "pK = 0.06..."
[1] "pK = 0.07..."
[1] "pK = 0.08..."
[1] "pK = 0.09..."
[1] "pK = 0.1..."
[1] "pK = 0.11..."
[1] "pK = 0.12..."
[1] "pK = 0.13..."
[1] "pK = 0.14..."
[1] "pK = 0.15..."
[1] "pK = 0.16..."
[1] "pK = 0.17..."
[1] "pK = 0.18..."
[1] "pK = 0.19..."
[1] "pK = 0.2..."
[1] "pK = 0.21..."
[1] "pK = 0.22..."
[1] "pK = 0.23..."
[1] "pK = 0.24..."
[1] "pK = 0.25..."
[1] "pK = 0.26..."
[1] "pK = 0.27..."
[1] "pK = 0.28..."
[1] "pK = 0.29..."
[1] "pK = 0.3..."

NULL
[1] "Selected pK: 0.005"
[1] "Creating 1438 artificial doublets..."
[1] "Creating Seurat object..."
[1] "Normalizing Seurat object..."
Normalizing layer: counts
Performing log-normalization
0%   10   20   30   40   50   60   70   80   90   100%
[----|----|----|----|----|----|----|----|----|----|
**************************************************|
[1] "Finding variable genes..."
Finding variable features for layer counts
Calculating gene variances
0%   10   20   30   40   50   60   70   80   90   100%
[----|----|----|----|----|----|----|----|----|----|
**************************************************|
Calculating feature variances of standardized and clipped values
0%   10   20   30   40   50   60   70   80   90   100%
[----|----|----|----|----|----|----|----|----|----|
**************************************************|
[1] "Scaling data..."
Centering and scaling data matrix

  |                                                                                                                                                                                                                     
  |                                                                                                                                                                                                               |   0%
  |                                                                                                                                                                                                                     
  |========================================================================================================                                                                                                       |  50%
  |                                                                                                                                                                                                                     
  |===============================================================================================================================================================================================================| 100%
[1] "Running PCA..."
[1] "Calculating PC distance matrix..."
[1] "Computing pANN..."
[1] "Classifying doublets.."

Doublet Singlet 
    201    5549 
[1] "Processing sample: 15"
[1] 55357  3747
[1] "Creating artificial doublets for pN = 5%"
[1] "Creating Seurat object..."
[1] "Normalizing Seurat object..."
Normalizing layer: counts
Performing log-normalization
0%   10   20   30   40   50   60   70   80   90   100%
[----|----|----|----|----|----|----|----|----|----|
**************************************************|
[1] "Finding variable genes..."
Finding variable features for layer counts
Calculating gene variances
0%   10   20   30   40   50   60   70   80   90   100%
[----|----|----|----|----|----|----|----|----|----|
**************************************************|
Calculating feature variances of standardized and clipped values
0%   10   20   30   40   50   60   70   80   90   100%
[----|----|----|----|----|----|----|----|----|----|
**************************************************|
[1] "Scaling data..."
Centering and scaling data matrix

  |                                                                                                                                                                                                                     
  |                                                                                                                                                                                                               |   0%
  |                                                                                                                                                                                                                     
  |========================================================================================================                                                                                                       |  50%
  |                                                                                                                                                                                                                     
  |===============================================================================================================================================================================================================| 100%
[1] "Running PCA..."
[1] "Calculating PC distance matrix..."
[1] "Defining neighborhoods..."
[1] "Computing pANN across all pK..."
[1] "pK = 0.005..."
[1] "pK = 0.01..."
[1] "pK = 0.02..."
[1] "pK = 0.03..."
[1] "pK = 0.04..."
[1] "pK = 0.05..."
[1] "pK = 0.06..."
[1] "pK = 0.07..."
[1] "pK = 0.08..."
[1] "pK = 0.09..."
[1] "pK = 0.1..."
[1] "pK = 0.11..."
[1] "pK = 0.12..."
[1] "pK = 0.13..."
[1] "pK = 0.14..."
[1] "pK = 0.15..."
[1] "pK = 0.16..."
[1] "pK = 0.17..."
[1] "pK = 0.18..."
[1] "pK = 0.19..."
[1] "pK = 0.2..."
[1] "pK = 0.21..."
[1] "pK = 0.22..."
[1] "pK = 0.23..."
[1] "pK = 0.24..."
[1] "pK = 0.25..."
[1] "pK = 0.26..."
[1] "pK = 0.27..."
[1] "pK = 0.28..."
[1] "pK = 0.29..."
[1] "pK = 0.3..."
[1] "Creating artificial doublets for pN = 10%"
[1] "Creating Seurat object..."
[1] "Normalizing Seurat object..."
Normalizing layer: counts
Performing log-normalization
0%   10   20   30   40   50   60   70   80   90   100%
[----|----|----|----|----|----|----|----|----|----|
**************************************************|
[1] "Finding variable genes..."
Finding variable features for layer counts
Calculating gene variances
0%   10   20   30   40   50   60   70   80   90   100%
[----|----|----|----|----|----|----|----|----|----|
**************************************************|
Calculating feature variances of standardized and clipped values
0%   10   20   30   40   50   60   70   80   90   100%
[----|----|----|----|----|----|----|----|----|----|
**************************************************|
[1] "Scaling data..."
Centering and scaling data matrix

  |                                                                                                                                                                                                                     
  |                                                                                                                                                                                                               |   0%
  |                                                                                                                                                                                                                     
  |========================================================================================================                                                                                                       |  50%
  |                                                                                                                                                                                                                     
  |===============================================================================================================================================================================================================| 100%
[1] "Running PCA..."
[1] "Calculating PC distance matrix..."
[1] "Defining neighborhoods..."
[1] "Computing pANN across all pK..."
[1] "pK = 0.005..."
[1] "pK = 0.01..."
[1] "pK = 0.02..."
[1] "pK = 0.03..."
[1] "pK = 0.04..."
[1] "pK = 0.05..."
[1] "pK = 0.06..."
[1] "pK = 0.07..."
[1] "pK = 0.08..."
[1] "pK = 0.09..."
[1] "pK = 0.1..."
[1] "pK = 0.11..."
[1] "pK = 0.12..."
[1] "pK = 0.13..."
[1] "pK = 0.14..."
[1] "pK = 0.15..."
[1] "pK = 0.16..."
[1] "pK = 0.17..."
[1] "pK = 0.18..."
[1] "pK = 0.19..."
[1] "pK = 0.2..."
[1] "pK = 0.21..."
[1] "pK = 0.22..."
[1] "pK = 0.23..."
[1] "pK = 0.24..."
[1] "pK = 0.25..."
[1] "pK = 0.26..."
[1] "pK = 0.27..."
[1] "pK = 0.28..."
[1] "pK = 0.29..."
[1] "pK = 0.3..."
[1] "Creating artificial doublets for pN = 15%"
[1] "Creating Seurat object..."
[1] "Normalizing Seurat object..."
Normalizing layer: counts
Performing log-normalization
0%   10   20   30   40   50   60   70   80   90   100%
[----|----|----|----|----|----|----|----|----|----|
**************************************************|
[1] "Finding variable genes..."
Finding variable features for layer counts
Calculating gene variances
0%   10   20   30   40   50   60   70   80   90   100%
[----|----|----|----|----|----|----|----|----|----|
**************************************************|
Calculating feature variances of standardized and clipped values
0%   10   20   30   40   50   60   70   80   90   100%
[----|----|----|----|----|----|----|----|----|----|
**************************************************|
[1] "Scaling data..."
Centering and scaling data matrix

  |                                                                                                                                                                                                                     
  |                                                                                                                                                                                                               |   0%
  |                                                                                                                                                                                                                     
  |========================================================================================================                                                                                                       |  50%
  |                                                                                                                                                                                                                     
  |===============================================================================================================================================================================================================| 100%
[1] "Running PCA..."
[1] "Calculating PC distance matrix..."
[1] "Defining neighborhoods..."
[1] "Computing pANN across all pK..."
[1] "pK = 0.005..."
[1] "pK = 0.01..."
[1] "pK = 0.02..."
[1] "pK = 0.03..."
[1] "pK = 0.04..."
[1] "pK = 0.05..."
[1] "pK = 0.06..."
[1] "pK = 0.07..."
[1] "pK = 0.08..."
[1] "pK = 0.09..."
[1] "pK = 0.1..."
[1] "pK = 0.11..."
[1] "pK = 0.12..."
[1] "pK = 0.13..."
[1] "pK = 0.14..."
[1] "pK = 0.15..."
[1] "pK = 0.16..."
[1] "pK = 0.17..."
[1] "pK = 0.18..."
[1] "pK = 0.19..."
[1] "pK = 0.2..."
[1] "pK = 0.21..."
[1] "pK = 0.22..."
[1] "pK = 0.23..."
[1] "pK = 0.24..."
[1] "pK = 0.25..."
[1] "pK = 0.26..."
[1] "pK = 0.27..."
[1] "pK = 0.28..."
[1] "pK = 0.29..."
[1] "pK = 0.3..."
[1] "Creating artificial doublets for pN = 20%"
[1] "Creating Seurat object..."
[1] "Normalizing Seurat object..."
Normalizing layer: counts
Performing log-normalization
0%   10   20   30   40   50   60   70   80   90   100%
[----|----|----|----|----|----|----|----|----|----|
**************************************************|
[1] "Finding variable genes..."
Finding variable features for layer counts
Calculating gene variances
0%   10   20   30   40   50   60   70   80   90   100%
[----|----|----|----|----|----|----|----|----|----|
**************************************************|
Calculating feature variances of standardized and clipped values
0%   10   20   30   40   50   60   70   80   90   100%
[----|----|----|----|----|----|----|----|----|----|
**************************************************|
[1] "Scaling data..."
Centering and scaling data matrix

  |                                                                                                                                                                                                                     
  |                                                                                                                                                                                                               |   0%
  |                                                                                                                                                                                                                     
  |========================================================================================================                                                                                                       |  50%
  |                                                                                                                                                                                                                     
  |===============================================================================================================================================================================================================| 100%
[1] "Running PCA..."
[1] "Calculating PC distance matrix..."
[1] "Defining neighborhoods..."
[1] "Computing pANN across all pK..."
[1] "pK = 0.005..."
[1] "pK = 0.01..."
[1] "pK = 0.02..."
[1] "pK = 0.03..."
[1] "pK = 0.04..."
[1] "pK = 0.05..."
[1] "pK = 0.06..."
[1] "pK = 0.07..."
[1] "pK = 0.08..."
[1] "pK = 0.09..."
[1] "pK = 0.1..."
[1] "pK = 0.11..."
[1] "pK = 0.12..."
[1] "pK = 0.13..."
[1] "pK = 0.14..."
[1] "pK = 0.15..."
[1] "pK = 0.16..."
[1] "pK = 0.17..."
[1] "pK = 0.18..."
[1] "pK = 0.19..."
[1] "pK = 0.2..."
[1] "pK = 0.21..."
[1] "pK = 0.22..."
[1] "pK = 0.23..."
[1] "pK = 0.24..."
[1] "pK = 0.25..."
[1] "pK = 0.26..."
[1] "pK = 0.27..."
[1] "pK = 0.28..."
[1] "pK = 0.29..."
[1] "pK = 0.3..."
[1] "Creating artificial doublets for pN = 25%"
[1] "Creating Seurat object..."
[1] "Normalizing Seurat object..."
Normalizing layer: counts
Performing log-normalization
0%   10   20   30   40   50   60   70   80   90   100%
[----|----|----|----|----|----|----|----|----|----|
**************************************************|
[1] "Finding variable genes..."
Finding variable features for layer counts
Calculating gene variances
0%   10   20   30   40   50   60   70   80   90   100%
[----|----|----|----|----|----|----|----|----|----|
**************************************************|
Calculating feature variances of standardized and clipped values
0%   10   20   30   40   50   60   70   80   90   100%
[----|----|----|----|----|----|----|----|----|----|
**************************************************|
[1] "Scaling data..."
Centering and scaling data matrix

  |                                                                                                                                                                                                                     
  |                                                                                                                                                                                                               |   0%
  |                                                                                                                                                                                                                     
  |========================================================================================================                                                                                                       |  50%
  |                                                                                                                                                                                                                     
  |===============================================================================================================================================================================================================| 100%
[1] "Running PCA..."
[1] "Calculating PC distance matrix..."
[1] "Defining neighborhoods..."
[1] "Computing pANN across all pK..."
[1] "pK = 0.005..."
[1] "pK = 0.01..."
[1] "pK = 0.02..."
[1] "pK = 0.03..."
[1] "pK = 0.04..."
[1] "pK = 0.05..."
[1] "pK = 0.06..."
[1] "pK = 0.07..."
[1] "pK = 0.08..."
[1] "pK = 0.09..."
[1] "pK = 0.1..."
[1] "pK = 0.11..."
[1] "pK = 0.12..."
[1] "pK = 0.13..."
[1] "pK = 0.14..."
[1] "pK = 0.15..."
[1] "pK = 0.16..."
[1] "pK = 0.17..."
[1] "pK = 0.18..."
[1] "pK = 0.19..."
[1] "pK = 0.2..."
[1] "pK = 0.21..."
[1] "pK = 0.22..."
[1] "pK = 0.23..."
[1] "pK = 0.24..."
[1] "pK = 0.25..."
[1] "pK = 0.26..."
[1] "pK = 0.27..."
[1] "pK = 0.28..."
[1] "pK = 0.29..."
[1] "pK = 0.3..."
[1] "Creating artificial doublets for pN = 30%"
[1] "Creating Seurat object..."
[1] "Normalizing Seurat object..."
Normalizing layer: counts
Performing log-normalization
0%   10   20   30   40   50   60   70   80   90   100%
[----|----|----|----|----|----|----|----|----|----|
**************************************************|
[1] "Finding variable genes..."
Finding variable features for layer counts
Calculating gene variances
0%   10   20   30   40   50   60   70   80   90   100%
[----|----|----|----|----|----|----|----|----|----|
**************************************************|
Calculating feature variances of standardized and clipped values
0%   10   20   30   40   50   60   70   80   90   100%
[----|----|----|----|----|----|----|----|----|----|
**************************************************|
[1] "Scaling data..."
Centering and scaling data matrix

  |                                                                                                                                                                                                                     
  |                                                                                                                                                                                                               |   0%
  |                                                                                                                                                                                                                     
  |========================================================================================================                                                                                                       |  50%
  |                                                                                                                                                                                                                     
  |===============================================================================================================================================================================================================| 100%
[1] "Running PCA..."
[1] "Calculating PC distance matrix..."
[1] "Defining neighborhoods..."
[1] "Computing pANN across all pK..."
[1] "pK = 0.005..."
[1] "pK = 0.01..."
[1] "pK = 0.02..."
[1] "pK = 0.03..."
[1] "pK = 0.04..."
[1] "pK = 0.05..."
[1] "pK = 0.06..."
[1] "pK = 0.07..."
[1] "pK = 0.08..."
[1] "pK = 0.09..."
[1] "pK = 0.1..."
[1] "pK = 0.11..."
[1] "pK = 0.12..."
[1] "pK = 0.13..."
[1] "pK = 0.14..."
[1] "pK = 0.15..."
[1] "pK = 0.16..."
[1] "pK = 0.17..."
[1] "pK = 0.18..."
[1] "pK = 0.19..."
[1] "pK = 0.2..."
[1] "pK = 0.21..."
[1] "pK = 0.22..."
[1] "pK = 0.23..."
[1] "pK = 0.24..."
[1] "pK = 0.25..."
[1] "pK = 0.26..."
[1] "pK = 0.27..."
[1] "pK = 0.28..."
[1] "pK = 0.29..."
[1] "pK = 0.3..."

NULL
[1] "Selected pK: 0.005"
[1] "Creating 937 artificial doublets..."
[1] "Creating Seurat object..."
[1] "Normalizing Seurat object..."
Normalizing layer: counts
Performing log-normalization
0%   10   20   30   40   50   60   70   80   90   100%
[----|----|----|----|----|----|----|----|----|----|
**************************************************|
[1] "Finding variable genes..."
Finding variable features for layer counts
Calculating gene variances
0%   10   20   30   40   50   60   70   80   90   100%
[----|----|----|----|----|----|----|----|----|----|
**************************************************|
Calculating feature variances of standardized and clipped values
0%   10   20   30   40   50   60   70   80   90   100%
[----|----|----|----|----|----|----|----|----|----|
**************************************************|
[1] "Scaling data..."
Centering and scaling data matrix

  |                                                                                                                                                                                                                     
  |                                                                                                                                                                                                               |   0%
  |                                                                                                                                                                                                                     
  |========================================================================================================                                                                                                       |  50%
  |                                                                                                                                                                                                                     
  |===============================================================================================================================================================================================================| 100%
[1] "Running PCA..."
[1] "Calculating PC distance matrix..."
[1] "Computing pANN..."
[1] "Classifying doublets.."

Doublet Singlet 
    131    3616 
[1] "Processing sample: 16"
[1] 55357  3758
[1] "Creating artificial doublets for pN = 5%"
[1] "Creating Seurat object..."
[1] "Normalizing Seurat object..."
Normalizing layer: counts
Performing log-normalization
0%   10   20   30   40   50   60   70   80   90   100%
[----|----|----|----|----|----|----|----|----|----|
**************************************************|
[1] "Finding variable genes..."
Finding variable features for layer counts
Calculating gene variances
0%   10   20   30   40   50   60   70   80   90   100%
[----|----|----|----|----|----|----|----|----|----|
**************************************************|
Calculating feature variances of standardized and clipped values
0%   10   20   30   40   50   60   70   80   90   100%
[----|----|----|----|----|----|----|----|----|----|
**************************************************|
[1] "Scaling data..."
Centering and scaling data matrix

  |                                                                                                                                                                                                                     
  |                                                                                                                                                                                                               |   0%
  |                                                                                                                                                                                                                     
  |========================================================================================================                                                                                                       |  50%
  |                                                                                                                                                                                                                     
  |===============================================================================================================================================================================================================| 100%
[1] "Running PCA..."
[1] "Calculating PC distance matrix..."
[1] "Defining neighborhoods..."
[1] "Computing pANN across all pK..."
[1] "pK = 0.005..."
[1] "pK = 0.01..."
[1] "pK = 0.02..."
[1] "pK = 0.03..."
[1] "pK = 0.04..."
[1] "pK = 0.05..."
[1] "pK = 0.06..."
[1] "pK = 0.07..."
[1] "pK = 0.08..."
[1] "pK = 0.09..."
[1] "pK = 0.1..."
[1] "pK = 0.11..."
[1] "pK = 0.12..."
[1] "pK = 0.13..."
[1] "pK = 0.14..."
[1] "pK = 0.15..."
[1] "pK = 0.16..."
[1] "pK = 0.17..."
[1] "pK = 0.18..."
[1] "pK = 0.19..."
[1] "pK = 0.2..."
[1] "pK = 0.21..."
[1] "pK = 0.22..."
[1] "pK = 0.23..."
[1] "pK = 0.24..."
[1] "pK = 0.25..."
[1] "pK = 0.26..."
[1] "pK = 0.27..."
[1] "pK = 0.28..."
[1] "pK = 0.29..."
[1] "pK = 0.3..."
[1] "Creating artificial doublets for pN = 10%"
[1] "Creating Seurat object..."
[1] "Normalizing Seurat object..."
Normalizing layer: counts
Performing log-normalization
0%   10   20   30   40   50   60   70   80   90   100%
[----|----|----|----|----|----|----|----|----|----|
**************************************************|
[1] "Finding variable genes..."
Finding variable features for layer counts
Calculating gene variances
0%   10   20   30   40   50   60   70   80   90   100%
[----|----|----|----|----|----|----|----|----|----|
**************************************************|
Calculating feature variances of standardized and clipped values
0%   10   20   30   40   50   60   70   80   90   100%
[----|----|----|----|----|----|----|----|----|----|
**************************************************|
[1] "Scaling data..."
Centering and scaling data matrix

  |                                                                                                                                                                                                                     
  |                                                                                                                                                                                                               |   0%
  |                                                                                                                                                                                                                     
  |========================================================================================================                                                                                                       |  50%
  |                                                                                                                                                                                                                     
  |===============================================================================================================================================================================================================| 100%
[1] "Running PCA..."
[1] "Calculating PC distance matrix..."
[1] "Defining neighborhoods..."
[1] "Computing pANN across all pK..."
[1] "pK = 0.005..."
[1] "pK = 0.01..."
[1] "pK = 0.02..."
[1] "pK = 0.03..."
[1] "pK = 0.04..."
[1] "pK = 0.05..."
[1] "pK = 0.06..."
[1] "pK = 0.07..."
[1] "pK = 0.08..."
[1] "pK = 0.09..."
[1] "pK = 0.1..."
[1] "pK = 0.11..."
[1] "pK = 0.12..."
[1] "pK = 0.13..."
[1] "pK = 0.14..."
[1] "pK = 0.15..."
[1] "pK = 0.16..."
[1] "pK = 0.17..."
[1] "pK = 0.18..."
[1] "pK = 0.19..."
[1] "pK = 0.2..."
[1] "pK = 0.21..."
[1] "pK = 0.22..."
[1] "pK = 0.23..."
[1] "pK = 0.24..."
[1] "pK = 0.25..."
[1] "pK = 0.26..."
[1] "pK = 0.27..."
[1] "pK = 0.28..."
[1] "pK = 0.29..."
[1] "pK = 0.3..."
[1] "Creating artificial doublets for pN = 15%"
[1] "Creating Seurat object..."
[1] "Normalizing Seurat object..."
Normalizing layer: counts
Performing log-normalization
0%   10   20   30   40   50   60   70   80   90   100%
[----|----|----|----|----|----|----|----|----|----|
**************************************************|
[1] "Finding variable genes..."
Finding variable features for layer counts
Calculating gene variances
0%   10   20   30   40   50   60   70   80   90   100%
[----|----|----|----|----|----|----|----|----|----|
**************************************************|
Calculating feature variances of standardized and clipped values
0%   10   20   30   40   50   60   70   80   90   100%
[----|----|----|----|----|----|----|----|----|----|
**************************************************|
[1] "Scaling data..."
Centering and scaling data matrix

  |                                                                                                                                                                                                                     
  |                                                                                                                                                                                                               |   0%
  |                                                                                                                                                                                                                     
  |========================================================================================================                                                                                                       |  50%
  |                                                                                                                                                                                                                     
  |===============================================================================================================================================================================================================| 100%
[1] "Running PCA..."
[1] "Calculating PC distance matrix..."
[1] "Defining neighborhoods..."
[1] "Computing pANN across all pK..."
[1] "pK = 0.005..."
[1] "pK = 0.01..."
[1] "pK = 0.02..."
[1] "pK = 0.03..."
[1] "pK = 0.04..."
[1] "pK = 0.05..."
[1] "pK = 0.06..."
[1] "pK = 0.07..."
[1] "pK = 0.08..."
[1] "pK = 0.09..."
[1] "pK = 0.1..."
[1] "pK = 0.11..."
[1] "pK = 0.12..."
[1] "pK = 0.13..."
[1] "pK = 0.14..."
[1] "pK = 0.15..."
[1] "pK = 0.16..."
[1] "pK = 0.17..."
[1] "pK = 0.18..."
[1] "pK = 0.19..."
[1] "pK = 0.2..."
[1] "pK = 0.21..."
[1] "pK = 0.22..."
[1] "pK = 0.23..."
[1] "pK = 0.24..."
[1] "pK = 0.25..."
[1] "pK = 0.26..."
[1] "pK = 0.27..."
[1] "pK = 0.28..."
[1] "pK = 0.29..."
[1] "pK = 0.3..."
[1] "Creating artificial doublets for pN = 20%"
[1] "Creating Seurat object..."
[1] "Normalizing Seurat object..."
Normalizing layer: counts
Performing log-normalization
0%   10   20   30   40   50   60   70   80   90   100%
[----|----|----|----|----|----|----|----|----|----|
**************************************************|
[1] "Finding variable genes..."
Finding variable features for layer counts
Calculating gene variances
0%   10   20   30   40   50   60   70   80   90   100%
[----|----|----|----|----|----|----|----|----|----|
**************************************************|
Calculating feature variances of standardized and clipped values
0%   10   20   30   40   50   60   70   80   90   100%
[----|----|----|----|----|----|----|----|----|----|
**************************************************|
[1] "Scaling data..."
Centering and scaling data matrix

  |                                                                                                                                                                                                                     
  |                                                                                                                                                                                                               |   0%
  |                                                                                                                                                                                                                     
  |========================================================================================================                                                                                                       |  50%
  |                                                                                                                                                                                                                     
  |===============================================================================================================================================================================================================| 100%
[1] "Running PCA..."
[1] "Calculating PC distance matrix..."
[1] "Defining neighborhoods..."
[1] "Computing pANN across all pK..."
[1] "pK = 0.005..."
[1] "pK = 0.01..."
[1] "pK = 0.02..."
[1] "pK = 0.03..."
[1] "pK = 0.04..."
[1] "pK = 0.05..."
[1] "pK = 0.06..."
[1] "pK = 0.07..."
[1] "pK = 0.08..."
[1] "pK = 0.09..."
[1] "pK = 0.1..."
[1] "pK = 0.11..."
[1] "pK = 0.12..."
[1] "pK = 0.13..."
[1] "pK = 0.14..."
[1] "pK = 0.15..."
[1] "pK = 0.16..."
[1] "pK = 0.17..."
[1] "pK = 0.18..."
[1] "pK = 0.19..."
[1] "pK = 0.2..."
[1] "pK = 0.21..."
[1] "pK = 0.22..."
[1] "pK = 0.23..."
[1] "pK = 0.24..."
[1] "pK = 0.25..."
[1] "pK = 0.26..."
[1] "pK = 0.27..."
[1] "pK = 0.28..."
[1] "pK = 0.29..."
[1] "pK = 0.3..."
[1] "Creating artificial doublets for pN = 25%"
[1] "Creating Seurat object..."
[1] "Normalizing Seurat object..."
Normalizing layer: counts
Performing log-normalization
0%   10   20   30   40   50   60   70   80   90   100%
[----|----|----|----|----|----|----|----|----|----|
**************************************************|
[1] "Finding variable genes..."
Finding variable features for layer counts
Calculating gene variances
0%   10   20   30   40   50   60   70   80   90   100%
[----|----|----|----|----|----|----|----|----|----|
**************************************************|
Calculating feature variances of standardized and clipped values
0%   10   20   30   40   50   60   70   80   90   100%
[----|----|----|----|----|----|----|----|----|----|
**************************************************|
[1] "Scaling data..."
Centering and scaling data matrix

  |                                                                                                                                                                                                                     
  |                                                                                                                                                                                                               |   0%
  |                                                                                                                                                                                                                     
  |========================================================================================================                                                                                                       |  50%
  |                                                                                                                                                                                                                     
  |===============================================================================================================================================================================================================| 100%
[1] "Running PCA..."
[1] "Calculating PC distance matrix..."
[1] "Defining neighborhoods..."
[1] "Computing pANN across all pK..."
[1] "pK = 0.005..."
[1] "pK = 0.01..."
[1] "pK = 0.02..."
[1] "pK = 0.03..."
[1] "pK = 0.04..."
[1] "pK = 0.05..."
[1] "pK = 0.06..."
[1] "pK = 0.07..."
[1] "pK = 0.08..."
[1] "pK = 0.09..."
[1] "pK = 0.1..."
[1] "pK = 0.11..."
[1] "pK = 0.12..."
[1] "pK = 0.13..."
[1] "pK = 0.14..."
[1] "pK = 0.15..."
[1] "pK = 0.16..."
[1] "pK = 0.17..."
[1] "pK = 0.18..."
[1] "pK = 0.19..."
[1] "pK = 0.2..."
[1] "pK = 0.21..."
[1] "pK = 0.22..."
[1] "pK = 0.23..."
[1] "pK = 0.24..."
[1] "pK = 0.25..."
[1] "pK = 0.26..."
[1] "pK = 0.27..."
[1] "pK = 0.28..."
[1] "pK = 0.29..."
[1] "pK = 0.3..."
[1] "Creating artificial doublets for pN = 30%"
[1] "Creating Seurat object..."
[1] "Normalizing Seurat object..."
Normalizing layer: counts
Performing log-normalization
0%   10   20   30   40   50   60   70   80   90   100%
[----|----|----|----|----|----|----|----|----|----|
**************************************************|
[1] "Finding variable genes..."
Finding variable features for layer counts
Calculating gene variances
0%   10   20   30   40   50   60   70   80   90   100%
[----|----|----|----|----|----|----|----|----|----|
**************************************************|
Calculating feature variances of standardized and clipped values
0%   10   20   30   40   50   60   70   80   90   100%
[----|----|----|----|----|----|----|----|----|----|
**************************************************|
[1] "Scaling data..."
Centering and scaling data matrix

  |                                                                                                                                                                                                                     
  |                                                                                                                                                                                                               |   0%
  |                                                                                                                                                                                                                     
  |========================================================================================================                                                                                                       |  50%
  |                                                                                                                                                                                                                     
  |===============================================================================================================================================================================================================| 100%
[1] "Running PCA..."
[1] "Calculating PC distance matrix..."
[1] "Defining neighborhoods..."
[1] "Computing pANN across all pK..."
[1] "pK = 0.005..."
[1] "pK = 0.01..."
[1] "pK = 0.02..."
[1] "pK = 0.03..."
[1] "pK = 0.04..."
[1] "pK = 0.05..."
[1] "pK = 0.06..."
[1] "pK = 0.07..."
[1] "pK = 0.08..."
[1] "pK = 0.09..."
[1] "pK = 0.1..."
[1] "pK = 0.11..."
[1] "pK = 0.12..."
[1] "pK = 0.13..."
[1] "pK = 0.14..."
[1] "pK = 0.15..."
[1] "pK = 0.16..."
[1] "pK = 0.17..."
[1] "pK = 0.18..."
[1] "pK = 0.19..."
[1] "pK = 0.2..."
[1] "pK = 0.21..."
[1] "pK = 0.22..."
[1] "pK = 0.23..."
[1] "pK = 0.24..."
[1] "pK = 0.25..."
[1] "pK = 0.26..."
[1] "pK = 0.27..."
[1] "pK = 0.28..."
[1] "pK = 0.29..."
[1] "pK = 0.3..."

NULL
[1] "Selected pK: 0.04"
[1] "Creating 940 artificial doublets..."
[1] "Creating Seurat object..."
[1] "Normalizing Seurat object..."
Normalizing layer: counts
Performing log-normalization
0%   10   20   30   40   50   60   70   80   90   100%
[----|----|----|----|----|----|----|----|----|----|
**************************************************|
[1] "Finding variable genes..."
Finding variable features for layer counts
Calculating gene variances
0%   10   20   30   40   50   60   70   80   90   100%
[----|----|----|----|----|----|----|----|----|----|
**************************************************|
Calculating feature variances of standardized and clipped values
0%   10   20   30   40   50   60   70   80   90   100%
[----|----|----|----|----|----|----|----|----|----|
**************************************************|
[1] "Scaling data..."
Centering and scaling data matrix

  |                                                                                                                                                                                                                     
  |                                                                                                                                                                                                               |   0%
  |                                                                                                                                                                                                                     
  |========================================================================================================                                                                                                       |  50%
  |                                                                                                                                                                                                                     
  |===============================================================================================================================================================================================================| 100%
[1] "Running PCA..."
[1] "Calculating PC distance matrix..."
[1] "Computing pANN..."
[1] "Classifying doublets.."

Doublet Singlet 
    132    3626 
[1] "Processing sample: 17"
[1] 55357  4968
[1] "Creating artificial doublets for pN = 5%"
[1] "Creating Seurat object..."
[1] "Normalizing Seurat object..."
Normalizing layer: counts
Performing log-normalization
0%   10   20   30   40   50   60   70   80   90   100%
[----|----|----|----|----|----|----|----|----|----|
**************************************************|
[1] "Finding variable genes..."
Finding variable features for layer counts
Calculating gene variances
0%   10   20   30   40   50   60   70   80   90   100%
[----|----|----|----|----|----|----|----|----|----|
**************************************************|
Calculating feature variances of standardized and clipped values
0%   10   20   30   40   50   60   70   80   90   100%
[----|----|----|----|----|----|----|----|----|----|
**************************************************|
[1] "Scaling data..."
Centering and scaling data matrix

  |                                                                                                                                                                                                                     
  |                                                                                                                                                                                                               |   0%
  |                                                                                                                                                                                                                     
  |========================================================================================================                                                                                                       |  50%
  |                                                                                                                                                                                                                     
  |===============================================================================================================================================================================================================| 100%
[1] "Running PCA..."
[1] "Calculating PC distance matrix..."
[1] "Defining neighborhoods..."
[1] "Computing pANN across all pK..."
[1] "pK = 0.005..."
[1] "pK = 0.01..."
[1] "pK = 0.02..."
[1] "pK = 0.03..."
[1] "pK = 0.04..."
[1] "pK = 0.05..."
[1] "pK = 0.06..."
[1] "pK = 0.07..."
[1] "pK = 0.08..."
[1] "pK = 0.09..."
[1] "pK = 0.1..."
[1] "pK = 0.11..."
[1] "pK = 0.12..."
[1] "pK = 0.13..."
[1] "pK = 0.14..."
[1] "pK = 0.15..."
[1] "pK = 0.16..."
[1] "pK = 0.17..."
[1] "pK = 0.18..."
[1] "pK = 0.19..."
[1] "pK = 0.2..."
[1] "pK = 0.21..."
[1] "pK = 0.22..."
[1] "pK = 0.23..."
[1] "pK = 0.24..."
[1] "pK = 0.25..."
[1] "pK = 0.26..."
[1] "pK = 0.27..."
[1] "pK = 0.28..."
[1] "pK = 0.29..."
[1] "pK = 0.3..."
[1] "Creating artificial doublets for pN = 10%"
[1] "Creating Seurat object..."
[1] "Normalizing Seurat object..."
Normalizing layer: counts
Performing log-normalization
0%   10   20   30   40   50   60   70   80   90   100%
[----|----|----|----|----|----|----|----|----|----|
**************************************************|
[1] "Finding variable genes..."
Finding variable features for layer counts
Calculating gene variances
0%   10   20   30   40   50   60   70   80   90   100%
[----|----|----|----|----|----|----|----|----|----|
**************************************************|
Calculating feature variances of standardized and clipped values
0%   10   20   30   40   50   60   70   80   90   100%
[----|----|----|----|----|----|----|----|----|----|
**************************************************|
[1] "Scaling data..."
Centering and scaling data matrix

  |                                                                                                                                                                                                                     
  |                                                                                                                                                                                                               |   0%
  |                                                                                                                                                                                                                     
  |========================================================================================================                                                                                                       |  50%
  |                                                                                                                                                                                                                     
  |===============================================================================================================================================================================================================| 100%
[1] "Running PCA..."
[1] "Calculating PC distance matrix..."
[1] "Defining neighborhoods..."
[1] "Computing pANN across all pK..."
[1] "pK = 0.005..."
[1] "pK = 0.01..."
[1] "pK = 0.02..."
[1] "pK = 0.03..."
[1] "pK = 0.04..."
[1] "pK = 0.05..."
[1] "pK = 0.06..."
[1] "pK = 0.07..."
[1] "pK = 0.08..."
[1] "pK = 0.09..."
[1] "pK = 0.1..."
[1] "pK = 0.11..."
[1] "pK = 0.12..."
[1] "pK = 0.13..."
[1] "pK = 0.14..."
[1] "pK = 0.15..."
[1] "pK = 0.16..."
[1] "pK = 0.17..."
[1] "pK = 0.18..."
[1] "pK = 0.19..."
[1] "pK = 0.2..."
[1] "pK = 0.21..."
[1] "pK = 0.22..."
[1] "pK = 0.23..."
[1] "pK = 0.24..."
[1] "pK = 0.25..."
[1] "pK = 0.26..."
[1] "pK = 0.27..."
[1] "pK = 0.28..."
[1] "pK = 0.29..."
[1] "pK = 0.3..."
[1] "Creating artificial doublets for pN = 15%"
[1] "Creating Seurat object..."
[1] "Normalizing Seurat object..."
Normalizing layer: counts
Performing log-normalization
0%   10   20   30   40   50   60   70   80   90   100%
[----|----|----|----|----|----|----|----|----|----|
**************************************************|
[1] "Finding variable genes..."
Finding variable features for layer counts
Calculating gene variances
0%   10   20   30   40   50   60   70   80   90   100%
[----|----|----|----|----|----|----|----|----|----|
**************************************************|
Calculating feature variances of standardized and clipped values
0%   10   20   30   40   50   60   70   80   90   100%
[----|----|----|----|----|----|----|----|----|----|
**************************************************|
[1] "Scaling data..."
Centering and scaling data matrix

  |                                                                                                                                                                                                                     
  |                                                                                                                                                                                                               |   0%
  |                                                                                                                                                                                                                     
  |========================================================================================================                                                                                                       |  50%
  |                                                                                                                                                                                                                     
  |===============================================================================================================================================================================================================| 100%
[1] "Running PCA..."
[1] "Calculating PC distance matrix..."
[1] "Defining neighborhoods..."
[1] "Computing pANN across all pK..."
[1] "pK = 0.005..."
[1] "pK = 0.01..."
[1] "pK = 0.02..."
[1] "pK = 0.03..."
[1] "pK = 0.04..."
[1] "pK = 0.05..."
[1] "pK = 0.06..."
[1] "pK = 0.07..."
[1] "pK = 0.08..."
[1] "pK = 0.09..."
[1] "pK = 0.1..."
[1] "pK = 0.11..."
[1] "pK = 0.12..."
[1] "pK = 0.13..."
[1] "pK = 0.14..."
[1] "pK = 0.15..."
[1] "pK = 0.16..."
[1] "pK = 0.17..."
[1] "pK = 0.18..."
[1] "pK = 0.19..."
[1] "pK = 0.2..."
[1] "pK = 0.21..."
[1] "pK = 0.22..."
[1] "pK = 0.23..."
[1] "pK = 0.24..."
[1] "pK = 0.25..."
[1] "pK = 0.26..."
[1] "pK = 0.27..."
[1] "pK = 0.28..."
[1] "pK = 0.29..."
[1] "pK = 0.3..."
[1] "Creating artificial doublets for pN = 20%"
[1] "Creating Seurat object..."
[1] "Normalizing Seurat object..."
Normalizing layer: counts
Performing log-normalization
0%   10   20   30   40   50   60   70   80   90   100%
[----|----|----|----|----|----|----|----|----|----|
**************************************************|
[1] "Finding variable genes..."
Finding variable features for layer counts
Calculating gene variances
0%   10   20   30   40   50   60   70   80   90   100%
[----|----|----|----|----|----|----|----|----|----|
**************************************************|
Calculating feature variances of standardized and clipped values
0%   10   20   30   40   50   60   70   80   90   100%
[----|----|----|----|----|----|----|----|----|----|
**************************************************|
[1] "Scaling data..."
Centering and scaling data matrix

  |                                                                                                                                                                                                                     
  |                                                                                                                                                                                                               |   0%
  |                                                                                                                                                                                                                     
  |========================================================================================================                                                                                                       |  50%
  |                                                                                                                                                                                                                     
  |===============================================================================================================================================================================================================| 100%
[1] "Running PCA..."
[1] "Calculating PC distance matrix..."
[1] "Defining neighborhoods..."
[1] "Computing pANN across all pK..."
[1] "pK = 0.005..."
[1] "pK = 0.01..."
[1] "pK = 0.02..."
[1] "pK = 0.03..."
[1] "pK = 0.04..."
[1] "pK = 0.05..."
[1] "pK = 0.06..."
[1] "pK = 0.07..."
[1] "pK = 0.08..."
[1] "pK = 0.09..."
[1] "pK = 0.1..."
[1] "pK = 0.11..."
[1] "pK = 0.12..."
[1] "pK = 0.13..."
[1] "pK = 0.14..."
[1] "pK = 0.15..."
[1] "pK = 0.16..."
[1] "pK = 0.17..."
[1] "pK = 0.18..."
[1] "pK = 0.19..."
[1] "pK = 0.2..."
[1] "pK = 0.21..."
[1] "pK = 0.22..."
[1] "pK = 0.23..."
[1] "pK = 0.24..."
[1] "pK = 0.25..."
[1] "pK = 0.26..."
[1] "pK = 0.27..."
[1] "pK = 0.28..."
[1] "pK = 0.29..."
[1] "pK = 0.3..."
[1] "Creating artificial doublets for pN = 25%"
[1] "Creating Seurat object..."
[1] "Normalizing Seurat object..."
Normalizing layer: counts
Performing log-normalization
0%   10   20   30   40   50   60   70   80   90   100%
[----|----|----|----|----|----|----|----|----|----|
**************************************************|
[1] "Finding variable genes..."
Finding variable features for layer counts
Calculating gene variances
0%   10   20   30   40   50   60   70   80   90   100%
[----|----|----|----|----|----|----|----|----|----|
**************************************************|
Calculating feature variances of standardized and clipped values
0%   10   20   30   40   50   60   70   80   90   100%
[----|----|----|----|----|----|----|----|----|----|
**************************************************|
[1] "Scaling data..."
Centering and scaling data matrix

  |                                                                                                                                                                                                                     
  |                                                                                                                                                                                                               |   0%
  |                                                                                                                                                                                                                     
  |========================================================================================================                                                                                                       |  50%
  |                                                                                                                                                                                                                     
  |===============================================================================================================================================================================================================| 100%
[1] "Running PCA..."
[1] "Calculating PC distance matrix..."
[1] "Defining neighborhoods..."
[1] "Computing pANN across all pK..."
[1] "pK = 0.005..."
[1] "pK = 0.01..."
[1] "pK = 0.02..."
[1] "pK = 0.03..."
[1] "pK = 0.04..."
[1] "pK = 0.05..."
[1] "pK = 0.06..."
[1] "pK = 0.07..."
[1] "pK = 0.08..."
[1] "pK = 0.09..."
[1] "pK = 0.1..."
[1] "pK = 0.11..."
[1] "pK = 0.12..."
[1] "pK = 0.13..."
[1] "pK = 0.14..."
[1] "pK = 0.15..."
[1] "pK = 0.16..."
[1] "pK = 0.17..."
[1] "pK = 0.18..."
[1] "pK = 0.19..."
[1] "pK = 0.2..."
[1] "pK = 0.21..."
[1] "pK = 0.22..."
[1] "pK = 0.23..."
[1] "pK = 0.24..."
[1] "pK = 0.25..."
[1] "pK = 0.26..."
[1] "pK = 0.27..."
[1] "pK = 0.28..."
[1] "pK = 0.29..."
[1] "pK = 0.3..."
[1] "Creating artificial doublets for pN = 30%"
[1] "Creating Seurat object..."
[1] "Normalizing Seurat object..."
Normalizing layer: counts
Performing log-normalization
0%   10   20   30   40   50   60   70   80   90   100%
[----|----|----|----|----|----|----|----|----|----|
**************************************************|
[1] "Finding variable genes..."
Finding variable features for layer counts
Calculating gene variances
0%   10   20   30   40   50   60   70   80   90   100%
[----|----|----|----|----|----|----|----|----|----|
**************************************************|
Calculating feature variances of standardized and clipped values
0%   10   20   30   40   50   60   70   80   90   100%
[----|----|----|----|----|----|----|----|----|----|
**************************************************|
[1] "Scaling data..."
Centering and scaling data matrix

  |                                                                                                                                                                                                                     
  |                                                                                                                                                                                                               |   0%
  |                                                                                                                                                                                                                     
  |========================================================================================================                                                                                                       |  50%
  |                                                                                                                                                                                                                     
  |===============================================================================================================================================================================================================| 100%
[1] "Running PCA..."
[1] "Calculating PC distance matrix..."
[1] "Defining neighborhoods..."
[1] "Computing pANN across all pK..."
[1] "pK = 0.005..."
[1] "pK = 0.01..."
[1] "pK = 0.02..."
[1] "pK = 0.03..."
[1] "pK = 0.04..."
[1] "pK = 0.05..."
[1] "pK = 0.06..."
[1] "pK = 0.07..."
[1] "pK = 0.08..."
[1] "pK = 0.09..."
[1] "pK = 0.1..."
[1] "pK = 0.11..."
[1] "pK = 0.12..."
[1] "pK = 0.13..."
[1] "pK = 0.14..."
[1] "pK = 0.15..."
[1] "pK = 0.16..."
[1] "pK = 0.17..."
[1] "pK = 0.18..."
[1] "pK = 0.19..."
[1] "pK = 0.2..."
[1] "pK = 0.21..."
[1] "pK = 0.22..."
[1] "pK = 0.23..."
[1] "pK = 0.24..."
[1] "pK = 0.25..."
[1] "pK = 0.26..."
[1] "pK = 0.27..."
[1] "pK = 0.28..."
[1] "pK = 0.29..."
[1] "pK = 0.3..."

NULL
[1] "Selected pK: 0.005"
[1] "Creating 1242 artificial doublets..."
[1] "Creating Seurat object..."
[1] "Normalizing Seurat object..."
Normalizing layer: counts
Performing log-normalization
0%   10   20   30   40   50   60   70   80   90   100%
[----|----|----|----|----|----|----|----|----|----|
**************************************************|
[1] "Finding variable genes..."
Finding variable features for layer counts
Calculating gene variances
0%   10   20   30   40   50   60   70   80   90   100%
[----|----|----|----|----|----|----|----|----|----|
**************************************************|
Calculating feature variances of standardized and clipped values
0%   10   20   30   40   50   60   70   80   90   100%
[----|----|----|----|----|----|----|----|----|----|
**************************************************|
[1] "Scaling data..."
Centering and scaling data matrix

  |                                                                                                                                                                                                                     
  |                                                                                                                                                                                                               |   0%
  |                                                                                                                                                                                                                     
  |========================================================================================================                                                                                                       |  50%
  |                                                                                                                                                                                                                     
  |===============================================================================================================================================================================================================| 100%
[1] "Running PCA..."
[1] "Calculating PC distance matrix..."
[1] "Computing pANN..."
[1] "Classifying doublets.."

Doublet Singlet 
    174    4794 
[1] "Processing sample: 18"
[1] 55357  5131
[1] "Creating artificial doublets for pN = 5%"
[1] "Creating Seurat object..."
[1] "Normalizing Seurat object..."
Normalizing layer: counts
Performing log-normalization
0%   10   20   30   40   50   60   70   80   90   100%
[----|----|----|----|----|----|----|----|----|----|
**************************************************|
[1] "Finding variable genes..."
Finding variable features for layer counts
Calculating gene variances
0%   10   20   30   40   50   60   70   80   90   100%
[----|----|----|----|----|----|----|----|----|----|
**************************************************|
Calculating feature variances of standardized and clipped values
0%   10   20   30   40   50   60   70   80   90   100%
[----|----|----|----|----|----|----|----|----|----|
**************************************************|
[1] "Scaling data..."
Centering and scaling data matrix

  |                                                                                                                                                                                                                     
  |                                                                                                                                                                                                               |   0%
  |                                                                                                                                                                                                                     
  |========================================================================================================                                                                                                       |  50%
  |                                                                                                                                                                                                                     
  |===============================================================================================================================================================================================================| 100%
[1] "Running PCA..."
[1] "Calculating PC distance matrix..."
[1] "Defining neighborhoods..."
[1] "Computing pANN across all pK..."
[1] "pK = 0.005..."
[1] "pK = 0.01..."
[1] "pK = 0.02..."
[1] "pK = 0.03..."
[1] "pK = 0.04..."
[1] "pK = 0.05..."
[1] "pK = 0.06..."
[1] "pK = 0.07..."
[1] "pK = 0.08..."
[1] "pK = 0.09..."
[1] "pK = 0.1..."
[1] "pK = 0.11..."
[1] "pK = 0.12..."
[1] "pK = 0.13..."
[1] "pK = 0.14..."
[1] "pK = 0.15..."
[1] "pK = 0.16..."
[1] "pK = 0.17..."
[1] "pK = 0.18..."
[1] "pK = 0.19..."
[1] "pK = 0.2..."
[1] "pK = 0.21..."
[1] "pK = 0.22..."
[1] "pK = 0.23..."
[1] "pK = 0.24..."
[1] "pK = 0.25..."
[1] "pK = 0.26..."
[1] "pK = 0.27..."
[1] "pK = 0.28..."
[1] "pK = 0.29..."
[1] "pK = 0.3..."
[1] "Creating artificial doublets for pN = 10%"
[1] "Creating Seurat object..."
[1] "Normalizing Seurat object..."
Normalizing layer: counts
Performing log-normalization
0%   10   20   30   40   50   60   70   80   90   100%
[----|----|----|----|----|----|----|----|----|----|
**************************************************|
[1] "Finding variable genes..."
Finding variable features for layer counts
Calculating gene variances
0%   10   20   30   40   50   60   70   80   90   100%
[----|----|----|----|----|----|----|----|----|----|
**************************************************|
Calculating feature variances of standardized and clipped values
0%   10   20   30   40   50   60   70   80   90   100%
[----|----|----|----|----|----|----|----|----|----|
**************************************************|
[1] "Scaling data..."
Centering and scaling data matrix

  |                                                                                                                                                                                                                     
  |                                                                                                                                                                                                               |   0%
  |                                                                                                                                                                                                                     
  |========================================================================================================                                                                                                       |  50%
  |                                                                                                                                                                                                                     
  |===============================================================================================================================================================================================================| 100%
[1] "Running PCA..."
[1] "Calculating PC distance matrix..."
[1] "Defining neighborhoods..."
[1] "Computing pANN across all pK..."
[1] "pK = 0.005..."
[1] "pK = 0.01..."
[1] "pK = 0.02..."
[1] "pK = 0.03..."
[1] "pK = 0.04..."
[1] "pK = 0.05..."
[1] "pK = 0.06..."
[1] "pK = 0.07..."
[1] "pK = 0.08..."
[1] "pK = 0.09..."
[1] "pK = 0.1..."
[1] "pK = 0.11..."
[1] "pK = 0.12..."
[1] "pK = 0.13..."
[1] "pK = 0.14..."
[1] "pK = 0.15..."
[1] "pK = 0.16..."
[1] "pK = 0.17..."
[1] "pK = 0.18..."
[1] "pK = 0.19..."
[1] "pK = 0.2..."
[1] "pK = 0.21..."
[1] "pK = 0.22..."
[1] "pK = 0.23..."
[1] "pK = 0.24..."
[1] "pK = 0.25..."
[1] "pK = 0.26..."
[1] "pK = 0.27..."
[1] "pK = 0.28..."
[1] "pK = 0.29..."
[1] "pK = 0.3..."
[1] "Creating artificial doublets for pN = 15%"
[1] "Creating Seurat object..."
[1] "Normalizing Seurat object..."
Normalizing layer: counts
Performing log-normalization
0%   10   20   30   40   50   60   70   80   90   100%
[----|----|----|----|----|----|----|----|----|----|
**************************************************|
[1] "Finding variable genes..."
Finding variable features for layer counts
Calculating gene variances
0%   10   20   30   40   50   60   70   80   90   100%
[----|----|----|----|----|----|----|----|----|----|
**************************************************|
Calculating feature variances of standardized and clipped values
0%   10   20   30   40   50   60   70   80   90   100%
[----|----|----|----|----|----|----|----|----|----|
**************************************************|
[1] "Scaling data..."
Centering and scaling data matrix

  |                                                                                                                                                                                                                     
  |                                                                                                                                                                                                               |   0%
  |                                                                                                                                                                                                                     
  |========================================================================================================                                                                                                       |  50%
  |                                                                                                                                                                                                                     
  |===============================================================================================================================================================================================================| 100%
[1] "Running PCA..."
[1] "Calculating PC distance matrix..."
[1] "Defining neighborhoods..."
[1] "Computing pANN across all pK..."
[1] "pK = 0.005..."
[1] "pK = 0.01..."
[1] "pK = 0.02..."
[1] "pK = 0.03..."
[1] "pK = 0.04..."
[1] "pK = 0.05..."
[1] "pK = 0.06..."
[1] "pK = 0.07..."
[1] "pK = 0.08..."
[1] "pK = 0.09..."
[1] "pK = 0.1..."
[1] "pK = 0.11..."
[1] "pK = 0.12..."
[1] "pK = 0.13..."
[1] "pK = 0.14..."
[1] "pK = 0.15..."
[1] "pK = 0.16..."
[1] "pK = 0.17..."
[1] "pK = 0.18..."
[1] "pK = 0.19..."
[1] "pK = 0.2..."
[1] "pK = 0.21..."
[1] "pK = 0.22..."
[1] "pK = 0.23..."
[1] "pK = 0.24..."
[1] "pK = 0.25..."
[1] "pK = 0.26..."
[1] "pK = 0.27..."
[1] "pK = 0.28..."
[1] "pK = 0.29..."
[1] "pK = 0.3..."
[1] "Creating artificial doublets for pN = 20%"
[1] "Creating Seurat object..."
[1] "Normalizing Seurat object..."
Normalizing layer: counts
Performing log-normalization
0%   10   20   30   40   50   60   70   80   90   100%
[----|----|----|----|----|----|----|----|----|----|
**************************************************|
[1] "Finding variable genes..."
Finding variable features for layer counts
Calculating gene variances
0%   10   20   30   40   50   60   70   80   90   100%
[----|----|----|----|----|----|----|----|----|----|
**************************************************|
Calculating feature variances of standardized and clipped values
0%   10   20   30   40   50   60   70   80   90   100%
[----|----|----|----|----|----|----|----|----|----|
**************************************************|
[1] "Scaling data..."
Centering and scaling data matrix

  |                                                                                                                                                                                                                     
  |                                                                                                                                                                                                               |   0%
  |                                                                                                                                                                                                                     
  |========================================================================================================                                                                                                       |  50%
  |                                                                                                                                                                                                                     
  |===============================================================================================================================================================================================================| 100%
[1] "Running PCA..."
[1] "Calculating PC distance matrix..."
[1] "Defining neighborhoods..."
[1] "Computing pANN across all pK..."
[1] "pK = 0.005..."
[1] "pK = 0.01..."
[1] "pK = 0.02..."
[1] "pK = 0.03..."
[1] "pK = 0.04..."
[1] "pK = 0.05..."
[1] "pK = 0.06..."
[1] "pK = 0.07..."
[1] "pK = 0.08..."
[1] "pK = 0.09..."
[1] "pK = 0.1..."
[1] "pK = 0.11..."
[1] "pK = 0.12..."
[1] "pK = 0.13..."
[1] "pK = 0.14..."
[1] "pK = 0.15..."
[1] "pK = 0.16..."
[1] "pK = 0.17..."
[1] "pK = 0.18..."
[1] "pK = 0.19..."
[1] "pK = 0.2..."
[1] "pK = 0.21..."
[1] "pK = 0.22..."
[1] "pK = 0.23..."
[1] "pK = 0.24..."
[1] "pK = 0.25..."
[1] "pK = 0.26..."
[1] "pK = 0.27..."
[1] "pK = 0.28..."
[1] "pK = 0.29..."
[1] "pK = 0.3..."
[1] "Creating artificial doublets for pN = 25%"
[1] "Creating Seurat object..."
[1] "Normalizing Seurat object..."
Normalizing layer: counts
Performing log-normalization
0%   10   20   30   40   50   60   70   80   90   100%
[----|----|----|----|----|----|----|----|----|----|
**************************************************|
[1] "Finding variable genes..."
Finding variable features for layer counts
Calculating gene variances
0%   10   20   30   40   50   60   70   80   90   100%
[----|----|----|----|----|----|----|----|----|----|
**************************************************|
Calculating feature variances of standardized and clipped values
0%   10   20   30   40   50   60   70   80   90   100%
[----|----|----|----|----|----|----|----|----|----|
**************************************************|
[1] "Scaling data..."
Centering and scaling data matrix

  |                                                                                                                                                                                                                     
  |                                                                                                                                                                                                               |   0%
  |                                                                                                                                                                                                                     
  |========================================================================================================                                                                                                       |  50%
  |                                                                                                                                                                                                                     
  |===============================================================================================================================================================================================================| 100%
[1] "Running PCA..."
[1] "Calculating PC distance matrix..."
[1] "Defining neighborhoods..."
[1] "Computing pANN across all pK..."
[1] "pK = 0.005..."
[1] "pK = 0.01..."
[1] "pK = 0.02..."
[1] "pK = 0.03..."
[1] "pK = 0.04..."
[1] "pK = 0.05..."
[1] "pK = 0.06..."
[1] "pK = 0.07..."
[1] "pK = 0.08..."
[1] "pK = 0.09..."
[1] "pK = 0.1..."
[1] "pK = 0.11..."
[1] "pK = 0.12..."
[1] "pK = 0.13..."
[1] "pK = 0.14..."
[1] "pK = 0.15..."
[1] "pK = 0.16..."
[1] "pK = 0.17..."
[1] "pK = 0.18..."
[1] "pK = 0.19..."
[1] "pK = 0.2..."
[1] "pK = 0.21..."
[1] "pK = 0.22..."
[1] "pK = 0.23..."
[1] "pK = 0.24..."
[1] "pK = 0.25..."
[1] "pK = 0.26..."
[1] "pK = 0.27..."
[1] "pK = 0.28..."
[1] "pK = 0.29..."
[1] "pK = 0.3..."
[1] "Creating artificial doublets for pN = 30%"
[1] "Creating Seurat object..."
[1] "Normalizing Seurat object..."
Normalizing layer: counts
Performing log-normalization
0%   10   20   30   40   50   60   70   80   90   100%
[----|----|----|----|----|----|----|----|----|----|
**************************************************|
[1] "Finding variable genes..."
Finding variable features for layer counts
Calculating gene variances
0%   10   20   30   40   50   60   70   80   90   100%
[----|----|----|----|----|----|----|----|----|----|
**************************************************|
Calculating feature variances of standardized and clipped values
0%   10   20   30   40   50   60   70   80   90   100%
[----|----|----|----|----|----|----|----|----|----|
**************************************************|
[1] "Scaling data..."
Centering and scaling data matrix

  |                                                                                                                                                                                                                     
  |                                                                                                                                                                                                               |   0%
  |                                                                                                                                                                                                                     
  |========================================================================================================                                                                                                       |  50%
  |                                                                                                                                                                                                                     
  |===============================================================================================================================================================================================================| 100%
[1] "Running PCA..."
[1] "Calculating PC distance matrix..."
[1] "Defining neighborhoods..."
[1] "Computing pANN across all pK..."
[1] "pK = 0.005..."
[1] "pK = 0.01..."
[1] "pK = 0.02..."
[1] "pK = 0.03..."
[1] "pK = 0.04..."
[1] "pK = 0.05..."
[1] "pK = 0.06..."
[1] "pK = 0.07..."
[1] "pK = 0.08..."
[1] "pK = 0.09..."
[1] "pK = 0.1..."
[1] "pK = 0.11..."
[1] "pK = 0.12..."
[1] "pK = 0.13..."
[1] "pK = 0.14..."
[1] "pK = 0.15..."
[1] "pK = 0.16..."
[1] "pK = 0.17..."
[1] "pK = 0.18..."
[1] "pK = 0.19..."
[1] "pK = 0.2..."
[1] "pK = 0.21..."
[1] "pK = 0.22..."
[1] "pK = 0.23..."
[1] "pK = 0.24..."
[1] "pK = 0.25..."
[1] "pK = 0.26..."
[1] "pK = 0.27..."
[1] "pK = 0.28..."
[1] "pK = 0.29..."
[1] "pK = 0.3..."

NULL
[1] "Selected pK: 0.005"
[1] "Creating 1283 artificial doublets..."
[1] "Creating Seurat object..."
[1] "Normalizing Seurat object..."
Normalizing layer: counts
Performing log-normalization
0%   10   20   30   40   50   60   70   80   90   100%
[----|----|----|----|----|----|----|----|----|----|
**************************************************|
[1] "Finding variable genes..."
Finding variable features for layer counts
Calculating gene variances
0%   10   20   30   40   50   60   70   80   90   100%
[----|----|----|----|----|----|----|----|----|----|
**************************************************|
Calculating feature variances of standardized and clipped values
0%   10   20   30   40   50   60   70   80   90   100%
[----|----|----|----|----|----|----|----|----|----|
**************************************************|
[1] "Scaling data..."
Centering and scaling data matrix

  |                                                                                                                                                                                                                     
  |                                                                                                                                                                                                               |   0%
  |                                                                                                                                                                                                                     
  |========================================================================================================                                                                                                       |  50%
  |                                                                                                                                                                                                                     
  |===============================================================================================================================================================================================================| 100%
[1] "Running PCA..."
[1] "Calculating PC distance matrix..."
[1] "Computing pANN..."
[1] "Classifying doublets.."

Doublet Singlet 
    180    4951 
[1] "Processing sample: 19"
[1] 55357  4214
[1] "Creating artificial doublets for pN = 5%"
[1] "Creating Seurat object..."
[1] "Normalizing Seurat object..."
Normalizing layer: counts
Performing log-normalization
0%   10   20   30   40   50   60   70   80   90   100%
[----|----|----|----|----|----|----|----|----|----|
**************************************************|
[1] "Finding variable genes..."
Finding variable features for layer counts
Calculating gene variances
0%   10   20   30   40   50   60   70   80   90   100%
[----|----|----|----|----|----|----|----|----|----|
**************************************************|
Calculating feature variances of standardized and clipped values
0%   10   20   30   40   50   60   70   80   90   100%
[----|----|----|----|----|----|----|----|----|----|
**************************************************|
[1] "Scaling data..."
Centering and scaling data matrix

  |                                                                                                                                                                                                                     
  |                                                                                                                                                                                                               |   0%
  |                                                                                                                                                                                                                     
  |========================================================================================================                                                                                                       |  50%
  |                                                                                                                                                                                                                     
  |===============================================================================================================================================================================================================| 100%
[1] "Running PCA..."
[1] "Calculating PC distance matrix..."
[1] "Defining neighborhoods..."
[1] "Computing pANN across all pK..."
[1] "pK = 0.005..."
[1] "pK = 0.01..."
[1] "pK = 0.02..."
[1] "pK = 0.03..."
[1] "pK = 0.04..."
[1] "pK = 0.05..."
[1] "pK = 0.06..."
[1] "pK = 0.07..."
[1] "pK = 0.08..."
[1] "pK = 0.09..."
[1] "pK = 0.1..."
[1] "pK = 0.11..."
[1] "pK = 0.12..."
[1] "pK = 0.13..."
[1] "pK = 0.14..."
[1] "pK = 0.15..."
[1] "pK = 0.16..."
[1] "pK = 0.17..."
[1] "pK = 0.18..."
[1] "pK = 0.19..."
[1] "pK = 0.2..."
[1] "pK = 0.21..."
[1] "pK = 0.22..."
[1] "pK = 0.23..."
[1] "pK = 0.24..."
[1] "pK = 0.25..."
[1] "pK = 0.26..."
[1] "pK = 0.27..."
[1] "pK = 0.28..."
[1] "pK = 0.29..."
[1] "pK = 0.3..."
[1] "Creating artificial doublets for pN = 10%"
[1] "Creating Seurat object..."
[1] "Normalizing Seurat object..."
Normalizing layer: counts
Performing log-normalization
0%   10   20   30   40   50   60   70   80   90   100%
[----|----|----|----|----|----|----|----|----|----|
**************************************************|
[1] "Finding variable genes..."
Finding variable features for layer counts
Calculating gene variances
0%   10   20   30   40   50   60   70   80   90   100%
[----|----|----|----|----|----|----|----|----|----|
**************************************************|
Calculating feature variances of standardized and clipped values
0%   10   20   30   40   50   60   70   80   90   100%
[----|----|----|----|----|----|----|----|----|----|
**************************************************|
[1] "Scaling data..."
Centering and scaling data matrix

  |                                                                                                                                                                                                                     
  |                                                                                                                                                                                                               |   0%
  |                                                                                                                                                                                                                     
  |========================================================================================================                                                                                                       |  50%
  |                                                                                                                                                                                                                     
  |===============================================================================================================================================================================================================| 100%
[1] "Running PCA..."
[1] "Calculating PC distance matrix..."
[1] "Defining neighborhoods..."
[1] "Computing pANN across all pK..."
[1] "pK = 0.005..."
[1] "pK = 0.01..."
[1] "pK = 0.02..."
[1] "pK = 0.03..."
[1] "pK = 0.04..."
[1] "pK = 0.05..."
[1] "pK = 0.06..."
[1] "pK = 0.07..."
[1] "pK = 0.08..."
[1] "pK = 0.09..."
[1] "pK = 0.1..."
[1] "pK = 0.11..."
[1] "pK = 0.12..."
[1] "pK = 0.13..."
[1] "pK = 0.14..."
[1] "pK = 0.15..."
[1] "pK = 0.16..."
[1] "pK = 0.17..."
[1] "pK = 0.18..."
[1] "pK = 0.19..."
[1] "pK = 0.2..."
[1] "pK = 0.21..."
[1] "pK = 0.22..."
[1] "pK = 0.23..."
[1] "pK = 0.24..."
[1] "pK = 0.25..."
[1] "pK = 0.26..."
[1] "pK = 0.27..."
[1] "pK = 0.28..."
[1] "pK = 0.29..."
[1] "pK = 0.3..."
[1] "Creating artificial doublets for pN = 15%"
[1] "Creating Seurat object..."
[1] "Normalizing Seurat object..."
Normalizing layer: counts
Performing log-normalization
0%   10   20   30   40   50   60   70   80   90   100%
[----|----|----|----|----|----|----|----|----|----|
**************************************************|
[1] "Finding variable genes..."
Finding variable features for layer counts
Calculating gene variances
0%   10   20   30   40   50   60   70   80   90   100%
[----|----|----|----|----|----|----|----|----|----|
**************************************************|
Calculating feature variances of standardized and clipped values
0%   10   20   30   40   50   60   70   80   90   100%
[----|----|----|----|----|----|----|----|----|----|
**************************************************|
[1] "Scaling data..."
Centering and scaling data matrix

  |                                                                                                                                                                                                                     
  |                                                                                                                                                                                                               |   0%
  |                                                                                                                                                                                                                     
  |========================================================================================================                                                                                                       |  50%
  |                                                                                                                                                                                                                     
  |===============================================================================================================================================================================================================| 100%
[1] "Running PCA..."
[1] "Calculating PC distance matrix..."
[1] "Defining neighborhoods..."
[1] "Computing pANN across all pK..."
[1] "pK = 0.005..."
[1] "pK = 0.01..."
[1] "pK = 0.02..."
[1] "pK = 0.03..."
[1] "pK = 0.04..."
[1] "pK = 0.05..."
[1] "pK = 0.06..."
[1] "pK = 0.07..."
[1] "pK = 0.08..."
[1] "pK = 0.09..."
[1] "pK = 0.1..."
[1] "pK = 0.11..."
[1] "pK = 0.12..."
[1] "pK = 0.13..."
[1] "pK = 0.14..."
[1] "pK = 0.15..."
[1] "pK = 0.16..."
[1] "pK = 0.17..."
[1] "pK = 0.18..."
[1] "pK = 0.19..."
[1] "pK = 0.2..."
[1] "pK = 0.21..."
[1] "pK = 0.22..."
[1] "pK = 0.23..."
[1] "pK = 0.24..."
[1] "pK = 0.25..."
[1] "pK = 0.26..."
[1] "pK = 0.27..."
[1] "pK = 0.28..."
[1] "pK = 0.29..."
[1] "pK = 0.3..."
[1] "Creating artificial doublets for pN = 20%"
[1] "Creating Seurat object..."
[1] "Normalizing Seurat object..."
Normalizing layer: counts
Performing log-normalization
0%   10   20   30   40   50   60   70   80   90   100%
[----|----|----|----|----|----|----|----|----|----|
**************************************************|
[1] "Finding variable genes..."
Finding variable features for layer counts
Calculating gene variances
0%   10   20   30   40   50   60   70   80   90   100%
[----|----|----|----|----|----|----|----|----|----|
**************************************************|
Calculating feature variances of standardized and clipped values
0%   10   20   30   40   50   60   70   80   90   100%
[----|----|----|----|----|----|----|----|----|----|
**************************************************|
[1] "Scaling data..."
Centering and scaling data matrix

  |                                                                                                                                                                                                                     
  |                                                                                                                                                                                                               |   0%
  |                                                                                                                                                                                                                     
  |========================================================================================================                                                                                                       |  50%
  |                                                                                                                                                                                                                     
  |===============================================================================================================================================================================================================| 100%
[1] "Running PCA..."
[1] "Calculating PC distance matrix..."
[1] "Defining neighborhoods..."
[1] "Computing pANN across all pK..."
[1] "pK = 0.005..."
[1] "pK = 0.01..."
[1] "pK = 0.02..."
[1] "pK = 0.03..."
[1] "pK = 0.04..."
[1] "pK = 0.05..."
[1] "pK = 0.06..."
[1] "pK = 0.07..."
[1] "pK = 0.08..."
[1] "pK = 0.09..."
[1] "pK = 0.1..."
[1] "pK = 0.11..."
[1] "pK = 0.12..."
[1] "pK = 0.13..."
[1] "pK = 0.14..."
[1] "pK = 0.15..."
[1] "pK = 0.16..."
[1] "pK = 0.17..."
[1] "pK = 0.18..."
[1] "pK = 0.19..."
[1] "pK = 0.2..."
[1] "pK = 0.21..."
[1] "pK = 0.22..."
[1] "pK = 0.23..."
[1] "pK = 0.24..."
[1] "pK = 0.25..."
[1] "pK = 0.26..."
[1] "pK = 0.27..."
[1] "pK = 0.28..."
[1] "pK = 0.29..."
[1] "pK = 0.3..."
[1] "Creating artificial doublets for pN = 25%"
[1] "Creating Seurat object..."
[1] "Normalizing Seurat object..."
Normalizing layer: counts
Performing log-normalization
0%   10   20   30   40   50   60   70   80   90   100%
[----|----|----|----|----|----|----|----|----|----|
**************************************************|
[1] "Finding variable genes..."
Finding variable features for layer counts
Calculating gene variances
0%   10   20   30   40   50   60   70   80   90   100%
[----|----|----|----|----|----|----|----|----|----|
**************************************************|
Calculating feature variances of standardized and clipped values
0%   10   20   30   40   50   60   70   80   90   100%
[----|----|----|----|----|----|----|----|----|----|
**************************************************|
[1] "Scaling data..."
Centering and scaling data matrix

  |                                                                                                                                                                                                                     
  |                                                                                                                                                                                                               |   0%
  |                                                                                                                                                                                                                     
  |========================================================================================================                                                                                                       |  50%
  |                                                                                                                                                                                                                     
  |===============================================================================================================================================================================================================| 100%
[1] "Running PCA..."
[1] "Calculating PC distance matrix..."
[1] "Defining neighborhoods..."
[1] "Computing pANN across all pK..."
[1] "pK = 0.005..."
[1] "pK = 0.01..."
[1] "pK = 0.02..."
[1] "pK = 0.03..."
[1] "pK = 0.04..."
[1] "pK = 0.05..."
[1] "pK = 0.06..."
[1] "pK = 0.07..."
[1] "pK = 0.08..."
[1] "pK = 0.09..."
[1] "pK = 0.1..."
[1] "pK = 0.11..."
[1] "pK = 0.12..."
[1] "pK = 0.13..."
[1] "pK = 0.14..."
[1] "pK = 0.15..."
[1] "pK = 0.16..."
[1] "pK = 0.17..."
[1] "pK = 0.18..."
[1] "pK = 0.19..."
[1] "pK = 0.2..."
[1] "pK = 0.21..."
[1] "pK = 0.22..."
[1] "pK = 0.23..."
[1] "pK = 0.24..."
[1] "pK = 0.25..."
[1] "pK = 0.26..."
[1] "pK = 0.27..."
[1] "pK = 0.28..."
[1] "pK = 0.29..."
[1] "pK = 0.3..."
[1] "Creating artificial doublets for pN = 30%"
[1] "Creating Seurat object..."
[1] "Normalizing Seurat object..."
Normalizing layer: counts
Performing log-normalization
0%   10   20   30   40   50   60   70   80   90   100%
[----|----|----|----|----|----|----|----|----|----|
**************************************************|
[1] "Finding variable genes..."
Finding variable features for layer counts
Calculating gene variances
0%   10   20   30   40   50   60   70   80   90   100%
[----|----|----|----|----|----|----|----|----|----|
**************************************************|
Calculating feature variances of standardized and clipped values
0%   10   20   30   40   50   60   70   80   90   100%
[----|----|----|----|----|----|----|----|----|----|
**************************************************|
[1] "Scaling data..."
Centering and scaling data matrix

  |                                                                                                                                                                                                                     
  |                                                                                                                                                                                                               |   0%
  |                                                                                                                                                                                                                     
  |========================================================================================================                                                                                                       |  50%
  |                                                                                                                                                                                                                     
  |===============================================================================================================================================================================================================| 100%
[1] "Running PCA..."
[1] "Calculating PC distance matrix..."
[1] "Defining neighborhoods..."
[1] "Computing pANN across all pK..."
[1] "pK = 0.005..."
[1] "pK = 0.01..."
[1] "pK = 0.02..."
[1] "pK = 0.03..."
[1] "pK = 0.04..."
[1] "pK = 0.05..."
[1] "pK = 0.06..."
[1] "pK = 0.07..."
[1] "pK = 0.08..."
[1] "pK = 0.09..."
[1] "pK = 0.1..."
[1] "pK = 0.11..."
[1] "pK = 0.12..."
[1] "pK = 0.13..."
[1] "pK = 0.14..."
[1] "pK = 0.15..."
[1] "pK = 0.16..."
[1] "pK = 0.17..."
[1] "pK = 0.18..."
[1] "pK = 0.19..."
[1] "pK = 0.2..."
[1] "pK = 0.21..."
[1] "pK = 0.22..."
[1] "pK = 0.23..."
[1] "pK = 0.24..."
[1] "pK = 0.25..."
[1] "pK = 0.26..."
[1] "pK = 0.27..."
[1] "pK = 0.28..."
[1] "pK = 0.29..."
[1] "pK = 0.3..."

NULL
[1] "Selected pK: 0.01"
[1] "Creating 1054 artificial doublets..."
[1] "Creating Seurat object..."
[1] "Normalizing Seurat object..."
Normalizing layer: counts
Performing log-normalization
0%   10   20   30   40   50   60   70   80   90   100%
[----|----|----|----|----|----|----|----|----|----|
**************************************************|
[1] "Finding variable genes..."
Finding variable features for layer counts
Calculating gene variances
0%   10   20   30   40   50   60   70   80   90   100%
[----|----|----|----|----|----|----|----|----|----|
**************************************************|
Calculating feature variances of standardized and clipped values
0%   10   20   30   40   50   60   70   80   90   100%
[----|----|----|----|----|----|----|----|----|----|
**************************************************|
[1] "Scaling data..."
Centering and scaling data matrix

  |                                                                                                                                                                                                                     
  |                                                                                                                                                                                                               |   0%
  |                                                                                                                                                                                                                     
  |========================================================================================================                                                                                                       |  50%
  |                                                                                                                                                                                                                     
  |===============================================================================================================================================================================================================| 100%
[1] "Running PCA..."
[1] "Calculating PC distance matrix..."
[1] "Computing pANN..."
[1] "Classifying doublets.."

Doublet Singlet 
    147    4067 
[1] "Processing sample: 20"
[1] 55357  4369
[1] "Creating artificial doublets for pN = 5%"
[1] "Creating Seurat object..."
[1] "Normalizing Seurat object..."
Normalizing layer: counts
Performing log-normalization
0%   10   20   30   40   50   60   70   80   90   100%
[----|----|----|----|----|----|----|----|----|----|
**************************************************|
[1] "Finding variable genes..."
Finding variable features for layer counts
Calculating gene variances
0%   10   20   30   40   50   60   70   80   90   100%
[----|----|----|----|----|----|----|----|----|----|
**************************************************|
Calculating feature variances of standardized and clipped values
0%   10   20   30   40   50   60   70   80   90   100%
[----|----|----|----|----|----|----|----|----|----|
**************************************************|
[1] "Scaling data..."
Centering and scaling data matrix

  |                                                                                                                                                                                                                     
  |                                                                                                                                                                                                               |   0%
  |                                                                                                                                                                                                                     
  |========================================================================================================                                                                                                       |  50%
  |                                                                                                                                                                                                                     
  |===============================================================================================================================================================================================================| 100%
[1] "Running PCA..."
[1] "Calculating PC distance matrix..."
[1] "Defining neighborhoods..."
[1] "Computing pANN across all pK..."
[1] "pK = 0.005..."
[1] "pK = 0.01..."
[1] "pK = 0.02..."
[1] "pK = 0.03..."
[1] "pK = 0.04..."
[1] "pK = 0.05..."
[1] "pK = 0.06..."
[1] "pK = 0.07..."
[1] "pK = 0.08..."
[1] "pK = 0.09..."
[1] "pK = 0.1..."
[1] "pK = 0.11..."
[1] "pK = 0.12..."
[1] "pK = 0.13..."
[1] "pK = 0.14..."
[1] "pK = 0.15..."
[1] "pK = 0.16..."
[1] "pK = 0.17..."
[1] "pK = 0.18..."
[1] "pK = 0.19..."
[1] "pK = 0.2..."
[1] "pK = 0.21..."
[1] "pK = 0.22..."
[1] "pK = 0.23..."
[1] "pK = 0.24..."
[1] "pK = 0.25..."
[1] "pK = 0.26..."
[1] "pK = 0.27..."
[1] "pK = 0.28..."
[1] "pK = 0.29..."
[1] "pK = 0.3..."
[1] "Creating artificial doublets for pN = 10%"
[1] "Creating Seurat object..."
[1] "Normalizing Seurat object..."
Normalizing layer: counts
Performing log-normalization
0%   10   20   30   40   50   60   70   80   90   100%
[----|----|----|----|----|----|----|----|----|----|
**************************************************|
[1] "Finding variable genes..."
Finding variable features for layer counts
Calculating gene variances
0%   10   20   30   40   50   60   70   80   90   100%
[----|----|----|----|----|----|----|----|----|----|
**************************************************|
Calculating feature variances of standardized and clipped values
0%   10   20   30   40   50   60   70   80   90   100%
[----|----|----|----|----|----|----|----|----|----|
**************************************************|
[1] "Scaling data..."
Centering and scaling data matrix

  |                                                                                                                                                                                                                     
  |                                                                                                                                                                                                               |   0%
  |                                                                                                                                                                                                                     
  |========================================================================================================                                                                                                       |  50%
  |                                                                                                                                                                                                                     
  |===============================================================================================================================================================================================================| 100%
[1] "Running PCA..."
[1] "Calculating PC distance matrix..."
[1] "Defining neighborhoods..."
[1] "Computing pANN across all pK..."
[1] "pK = 0.005..."
[1] "pK = 0.01..."
[1] "pK = 0.02..."
[1] "pK = 0.03..."
[1] "pK = 0.04..."
[1] "pK = 0.05..."
[1] "pK = 0.06..."
[1] "pK = 0.07..."
[1] "pK = 0.08..."
[1] "pK = 0.09..."
[1] "pK = 0.1..."
[1] "pK = 0.11..."
[1] "pK = 0.12..."
[1] "pK = 0.13..."
[1] "pK = 0.14..."
[1] "pK = 0.15..."
[1] "pK = 0.16..."
[1] "pK = 0.17..."
[1] "pK = 0.18..."
[1] "pK = 0.19..."
[1] "pK = 0.2..."
[1] "pK = 0.21..."
[1] "pK = 0.22..."
[1] "pK = 0.23..."
[1] "pK = 0.24..."
[1] "pK = 0.25..."
[1] "pK = 0.26..."
[1] "pK = 0.27..."
[1] "pK = 0.28..."
[1] "pK = 0.29..."
[1] "pK = 0.3..."
[1] "Creating artificial doublets for pN = 15%"
[1] "Creating Seurat object..."
[1] "Normalizing Seurat object..."
Normalizing layer: counts
Performing log-normalization
0%   10   20   30   40   50   60   70   80   90   100%
[----|----|----|----|----|----|----|----|----|----|
**************************************************|
[1] "Finding variable genes..."
Finding variable features for layer counts
Calculating gene variances
0%   10   20   30   40   50   60   70   80   90   100%
[----|----|----|----|----|----|----|----|----|----|
**************************************************|
Calculating feature variances of standardized and clipped values
0%   10   20   30   40   50   60   70   80   90   100%
[----|----|----|----|----|----|----|----|----|----|
**************************************************|
[1] "Scaling data..."
Centering and scaling data matrix

  |                                                                                                                                                                                                                     
  |                                                                                                                                                                                                               |   0%
  |                                                                                                                                                                                                                     
  |========================================================================================================                                                                                                       |  50%
  |                                                                                                                                                                                                                     
  |===============================================================================================================================================================================================================| 100%
[1] "Running PCA..."
[1] "Calculating PC distance matrix..."
[1] "Defining neighborhoods..."
[1] "Computing pANN across all pK..."
[1] "pK = 0.005..."
[1] "pK = 0.01..."
[1] "pK = 0.02..."
[1] "pK = 0.03..."
[1] "pK = 0.04..."
[1] "pK = 0.05..."
[1] "pK = 0.06..."
[1] "pK = 0.07..."
[1] "pK = 0.08..."
[1] "pK = 0.09..."
[1] "pK = 0.1..."
[1] "pK = 0.11..."
[1] "pK = 0.12..."
[1] "pK = 0.13..."
[1] "pK = 0.14..."
[1] "pK = 0.15..."
[1] "pK = 0.16..."
[1] "pK = 0.17..."
[1] "pK = 0.18..."
[1] "pK = 0.19..."
[1] "pK = 0.2..."
[1] "pK = 0.21..."
[1] "pK = 0.22..."
[1] "pK = 0.23..."
[1] "pK = 0.24..."
[1] "pK = 0.25..."
[1] "pK = 0.26..."
[1] "pK = 0.27..."
[1] "pK = 0.28..."
[1] "pK = 0.29..."
[1] "pK = 0.3..."
[1] "Creating artificial doublets for pN = 20%"
[1] "Creating Seurat object..."
[1] "Normalizing Seurat object..."
Normalizing layer: counts
Performing log-normalization
0%   10   20   30   40   50   60   70   80   90   100%
[----|----|----|----|----|----|----|----|----|----|
**************************************************|
[1] "Finding variable genes..."
Finding variable features for layer counts
Calculating gene variances
0%   10   20   30   40   50   60   70   80   90   100%
[----|----|----|----|----|----|----|----|----|----|
**************************************************|
Calculating feature variances of standardized and clipped values
0%   10   20   30   40   50   60   70   80   90   100%
[----|----|----|----|----|----|----|----|----|----|
**************************************************|
[1] "Scaling data..."
Centering and scaling data matrix

  |                                                                                                                                                                                                                     
  |                                                                                                                                                                                                               |   0%
  |                                                                                                                                                                                                                     
  |========================================================================================================                                                                                                       |  50%
  |                                                                                                                                                                                                                     
  |===============================================================================================================================================================================================================| 100%
[1] "Running PCA..."
[1] "Calculating PC distance matrix..."
[1] "Defining neighborhoods..."
[1] "Computing pANN across all pK..."
[1] "pK = 0.005..."
[1] "pK = 0.01..."
[1] "pK = 0.02..."
[1] "pK = 0.03..."
[1] "pK = 0.04..."
[1] "pK = 0.05..."
[1] "pK = 0.06..."
[1] "pK = 0.07..."
[1] "pK = 0.08..."
[1] "pK = 0.09..."
[1] "pK = 0.1..."
[1] "pK = 0.11..."
[1] "pK = 0.12..."
[1] "pK = 0.13..."
[1] "pK = 0.14..."
[1] "pK = 0.15..."
[1] "pK = 0.16..."
[1] "pK = 0.17..."
[1] "pK = 0.18..."
[1] "pK = 0.19..."
[1] "pK = 0.2..."
[1] "pK = 0.21..."
[1] "pK = 0.22..."
[1] "pK = 0.23..."
[1] "pK = 0.24..."
[1] "pK = 0.25..."
[1] "pK = 0.26..."
[1] "pK = 0.27..."
[1] "pK = 0.28..."
[1] "pK = 0.29..."
[1] "pK = 0.3..."
[1] "Creating artificial doublets for pN = 25%"
[1] "Creating Seurat object..."
[1] "Normalizing Seurat object..."
Normalizing layer: counts
Performing log-normalization
0%   10   20   30   40   50   60   70   80   90   100%
[----|----|----|----|----|----|----|----|----|----|
**************************************************|
[1] "Finding variable genes..."
Finding variable features for layer counts
Calculating gene variances
0%   10   20   30   40   50   60   70   80   90   100%
[----|----|----|----|----|----|----|----|----|----|
**************************************************|
Calculating feature variances of standardized and clipped values
0%   10   20   30   40   50   60   70   80   90   100%
[----|----|----|----|----|----|----|----|----|----|
**************************************************|
[1] "Scaling data..."
Centering and scaling data matrix

  |                                                                                                                                                                                                                     
  |                                                                                                                                                                                                               |   0%
  |                                                                                                                                                                                                                     
  |========================================================================================================                                                                                                       |  50%
  |                                                                                                                                                                                                                     
  |===============================================================================================================================================================================================================| 100%
[1] "Running PCA..."
[1] "Calculating PC distance matrix..."
[1] "Defining neighborhoods..."
[1] "Computing pANN across all pK..."
[1] "pK = 0.005..."
[1] "pK = 0.01..."
[1] "pK = 0.02..."
[1] "pK = 0.03..."
[1] "pK = 0.04..."
[1] "pK = 0.05..."
[1] "pK = 0.06..."
[1] "pK = 0.07..."
[1] "pK = 0.08..."
[1] "pK = 0.09..."
[1] "pK = 0.1..."
[1] "pK = 0.11..."
[1] "pK = 0.12..."
[1] "pK = 0.13..."
[1] "pK = 0.14..."
[1] "pK = 0.15..."
[1] "pK = 0.16..."
[1] "pK = 0.17..."
[1] "pK = 0.18..."
[1] "pK = 0.19..."
[1] "pK = 0.2..."
[1] "pK = 0.21..."
[1] "pK = 0.22..."
[1] "pK = 0.23..."
[1] "pK = 0.24..."
[1] "pK = 0.25..."
[1] "pK = 0.26..."
[1] "pK = 0.27..."
[1] "pK = 0.28..."
[1] "pK = 0.29..."
[1] "pK = 0.3..."
[1] "Creating artificial doublets for pN = 30%"
[1] "Creating Seurat object..."
[1] "Normalizing Seurat object..."
Normalizing layer: counts
Performing log-normalization
0%   10   20   30   40   50   60   70   80   90   100%
[----|----|----|----|----|----|----|----|----|----|
**************************************************|
[1] "Finding variable genes..."
Finding variable features for layer counts
Calculating gene variances
0%   10   20   30   40   50   60   70   80   90   100%
[----|----|----|----|----|----|----|----|----|----|
**************************************************|
Calculating feature variances of standardized and clipped values
0%   10   20   30   40   50   60   70   80   90   100%
[----|----|----|----|----|----|----|----|----|----|
**************************************************|
[1] "Scaling data..."
Centering and scaling data matrix

  |                                                                                                                                                                                                                     
  |                                                                                                                                                                                                               |   0%
  |                                                                                                                                                                                                                     
  |========================================================================================================                                                                                                       |  50%
  |                                                                                                                                                                                                                     
  |===============================================================================================================================================================================================================| 100%
[1] "Running PCA..."
[1] "Calculating PC distance matrix..."
[1] "Defining neighborhoods..."
[1] "Computing pANN across all pK..."
[1] "pK = 0.005..."
[1] "pK = 0.01..."
[1] "pK = 0.02..."
[1] "pK = 0.03..."
[1] "pK = 0.04..."
[1] "pK = 0.05..."
[1] "pK = 0.06..."
[1] "pK = 0.07..."
[1] "pK = 0.08..."
[1] "pK = 0.09..."
[1] "pK = 0.1..."
[1] "pK = 0.11..."
[1] "pK = 0.12..."
[1] "pK = 0.13..."
[1] "pK = 0.14..."
[1] "pK = 0.15..."
[1] "pK = 0.16..."
[1] "pK = 0.17..."
[1] "pK = 0.18..."
[1] "pK = 0.19..."
[1] "pK = 0.2..."
[1] "pK = 0.21..."
[1] "pK = 0.22..."
[1] "pK = 0.23..."
[1] "pK = 0.24..."
[1] "pK = 0.25..."
[1] "pK = 0.26..."
[1] "pK = 0.27..."
[1] "pK = 0.28..."
[1] "pK = 0.29..."
[1] "pK = 0.3..."

NULL
[1] "Selected pK: 0.01"
[1] "Creating 1092 artificial doublets..."
[1] "Creating Seurat object..."
[1] "Normalizing Seurat object..."
Normalizing layer: counts
Performing log-normalization
0%   10   20   30   40   50   60   70   80   90   100%
[----|----|----|----|----|----|----|----|----|----|
**************************************************|
[1] "Finding variable genes..."
Finding variable features for layer counts
Calculating gene variances
0%   10   20   30   40   50   60   70   80   90   100%
[----|----|----|----|----|----|----|----|----|----|
**************************************************|
Calculating feature variances of standardized and clipped values
0%   10   20   30   40   50   60   70   80   90   100%
[----|----|----|----|----|----|----|----|----|----|
**************************************************|
[1] "Scaling data..."
Centering and scaling data matrix

  |                                                                                                                                                                                                                     
  |                                                                                                                                                                                                               |   0%
  |                                                                                                                                                                                                                     
  |========================================================================================================                                                                                                       |  50%
  |                                                                                                                                                                                                                     
  |===============================================================================================================================================================================================================| 100%
[1] "Running PCA..."
[1] "Calculating PC distance matrix..."
[1] "Computing pANN..."
[1] "Classifying doublets.."

Doublet Singlet 
    153    4216 
[1] "Processing sample: 21"
[1] 55357  3339
[1] "Creating artificial doublets for pN = 5%"
[1] "Creating Seurat object..."
[1] "Normalizing Seurat object..."
Normalizing layer: counts
Performing log-normalization
0%   10   20   30   40   50   60   70   80   90   100%
[----|----|----|----|----|----|----|----|----|----|
**************************************************|
[1] "Finding variable genes..."
Finding variable features for layer counts
Calculating gene variances
0%   10   20   30   40   50   60   70   80   90   100%
[----|----|----|----|----|----|----|----|----|----|
**************************************************|
Calculating feature variances of standardized and clipped values
0%   10   20   30   40   50   60   70   80   90   100%
[----|----|----|----|----|----|----|----|----|----|
**************************************************|
[1] "Scaling data..."
Centering and scaling data matrix

  |                                                                                                                                                                                                                     
  |                                                                                                                                                                                                               |   0%
  |                                                                                                                                                                                                                     
  |========================================================================================================                                                                                                       |  50%
  |                                                                                                                                                                                                                     
  |===============================================================================================================================================================================================================| 100%
[1] "Running PCA..."
[1] "Calculating PC distance matrix..."
[1] "Defining neighborhoods..."
[1] "Computing pANN across all pK..."
[1] "pK = 0.005..."
[1] "pK = 0.01..."
[1] "pK = 0.02..."
[1] "pK = 0.03..."
[1] "pK = 0.04..."
[1] "pK = 0.05..."
[1] "pK = 0.06..."
[1] "pK = 0.07..."
[1] "pK = 0.08..."
[1] "pK = 0.09..."
[1] "pK = 0.1..."
[1] "pK = 0.11..."
[1] "pK = 0.12..."
[1] "pK = 0.13..."
[1] "pK = 0.14..."
[1] "pK = 0.15..."
[1] "pK = 0.16..."
[1] "pK = 0.17..."
[1] "pK = 0.18..."
[1] "pK = 0.19..."
[1] "pK = 0.2..."
[1] "pK = 0.21..."
[1] "pK = 0.22..."
[1] "pK = 0.23..."
[1] "pK = 0.24..."
[1] "pK = 0.25..."
[1] "pK = 0.26..."
[1] "pK = 0.27..."
[1] "pK = 0.28..."
[1] "pK = 0.29..."
[1] "pK = 0.3..."
[1] "Creating artificial doublets for pN = 10%"
[1] "Creating Seurat object..."
[1] "Normalizing Seurat object..."
Normalizing layer: counts
Performing log-normalization
0%   10   20   30   40   50   60   70   80   90   100%
[----|----|----|----|----|----|----|----|----|----|
**************************************************|
[1] "Finding variable genes..."
Finding variable features for layer counts
Calculating gene variances
0%   10   20   30   40   50   60   70   80   90   100%
[----|----|----|----|----|----|----|----|----|----|
**************************************************|
Calculating feature variances of standardized and clipped values
0%   10   20   30   40   50   60   70   80   90   100%
[----|----|----|----|----|----|----|----|----|----|
**************************************************|
[1] "Scaling data..."
Centering and scaling data matrix

  |                                                                                                                                                                                                                     
  |                                                                                                                                                                                                               |   0%
  |                                                                                                                                                                                                                     
  |========================================================================================================                                                                                                       |  50%
  |                                                                                                                                                                                                                     
  |===============================================================================================================================================================================================================| 100%
[1] "Running PCA..."
[1] "Calculating PC distance matrix..."
[1] "Defining neighborhoods..."
[1] "Computing pANN across all pK..."
[1] "pK = 0.005..."
[1] "pK = 0.01..."
[1] "pK = 0.02..."
[1] "pK = 0.03..."
[1] "pK = 0.04..."
[1] "pK = 0.05..."
[1] "pK = 0.06..."
[1] "pK = 0.07..."
[1] "pK = 0.08..."
[1] "pK = 0.09..."
[1] "pK = 0.1..."
[1] "pK = 0.11..."
[1] "pK = 0.12..."
[1] "pK = 0.13..."
[1] "pK = 0.14..."
[1] "pK = 0.15..."
[1] "pK = 0.16..."
[1] "pK = 0.17..."
[1] "pK = 0.18..."
[1] "pK = 0.19..."
[1] "pK = 0.2..."
[1] "pK = 0.21..."
[1] "pK = 0.22..."
[1] "pK = 0.23..."
[1] "pK = 0.24..."
[1] "pK = 0.25..."
[1] "pK = 0.26..."
[1] "pK = 0.27..."
[1] "pK = 0.28..."
[1] "pK = 0.29..."
[1] "pK = 0.3..."
[1] "Creating artificial doublets for pN = 15%"
[1] "Creating Seurat object..."
[1] "Normalizing Seurat object..."
Normalizing layer: counts
Performing log-normalization
0%   10   20   30   40   50   60   70   80   90   100%
[----|----|----|----|----|----|----|----|----|----|
**************************************************|
[1] "Finding variable genes..."
Finding variable features for layer counts
Calculating gene variances
0%   10   20   30   40   50   60   70   80   90   100%
[----|----|----|----|----|----|----|----|----|----|
**************************************************|
Calculating feature variances of standardized and clipped values
0%   10   20   30   40   50   60   70   80   90   100%
[----|----|----|----|----|----|----|----|----|----|
**************************************************|
[1] "Scaling data..."
Centering and scaling data matrix

  |                                                                                                                                                                                                                     
  |                                                                                                                                                                                                               |   0%
  |                                                                                                                                                                                                                     
  |========================================================================================================                                                                                                       |  50%
  |                                                                                                                                                                                                                     
  |===============================================================================================================================================================================================================| 100%
[1] "Running PCA..."
[1] "Calculating PC distance matrix..."
[1] "Defining neighborhoods..."
[1] "Computing pANN across all pK..."
[1] "pK = 0.005..."
[1] "pK = 0.01..."
[1] "pK = 0.02..."
[1] "pK = 0.03..."
[1] "pK = 0.04..."
[1] "pK = 0.05..."
[1] "pK = 0.06..."
[1] "pK = 0.07..."
[1] "pK = 0.08..."
[1] "pK = 0.09..."
[1] "pK = 0.1..."
[1] "pK = 0.11..."
[1] "pK = 0.12..."
[1] "pK = 0.13..."
[1] "pK = 0.14..."
[1] "pK = 0.15..."
[1] "pK = 0.16..."
[1] "pK = 0.17..."
[1] "pK = 0.18..."
[1] "pK = 0.19..."
[1] "pK = 0.2..."
[1] "pK = 0.21..."
[1] "pK = 0.22..."
[1] "pK = 0.23..."
[1] "pK = 0.24..."
[1] "pK = 0.25..."
[1] "pK = 0.26..."
[1] "pK = 0.27..."
[1] "pK = 0.28..."
[1] "pK = 0.29..."
[1] "pK = 0.3..."
[1] "Creating artificial doublets for pN = 20%"
[1] "Creating Seurat object..."
[1] "Normalizing Seurat object..."
Normalizing layer: counts
Performing log-normalization
0%   10   20   30   40   50   60   70   80   90   100%
[----|----|----|----|----|----|----|----|----|----|
**************************************************|
[1] "Finding variable genes..."
Finding variable features for layer counts
Calculating gene variances
0%   10   20   30   40   50   60   70   80   90   100%
[----|----|----|----|----|----|----|----|----|----|
**************************************************|
Calculating feature variances of standardized and clipped values
0%   10   20   30   40   50   60   70   80   90   100%
[----|----|----|----|----|----|----|----|----|----|
**************************************************|
[1] "Scaling data..."
Centering and scaling data matrix

  |                                                                                                                                                                                                                     
  |                                                                                                                                                                                                               |   0%
  |                                                                                                                                                                                                                     
  |========================================================================================================                                                                                                       |  50%
  |                                                                                                                                                                                                                     
  |===============================================================================================================================================================================================================| 100%
[1] "Running PCA..."
[1] "Calculating PC distance matrix..."
[1] "Defining neighborhoods..."
[1] "Computing pANN across all pK..."
[1] "pK = 0.005..."
[1] "pK = 0.01..."
[1] "pK = 0.02..."
[1] "pK = 0.03..."
[1] "pK = 0.04..."
[1] "pK = 0.05..."
[1] "pK = 0.06..."
[1] "pK = 0.07..."
[1] "pK = 0.08..."
[1] "pK = 0.09..."
[1] "pK = 0.1..."
[1] "pK = 0.11..."
[1] "pK = 0.12..."
[1] "pK = 0.13..."
[1] "pK = 0.14..."
[1] "pK = 0.15..."
[1] "pK = 0.16..."
[1] "pK = 0.17..."
[1] "pK = 0.18..."
[1] "pK = 0.19..."
[1] "pK = 0.2..."
[1] "pK = 0.21..."
[1] "pK = 0.22..."
[1] "pK = 0.23..."
[1] "pK = 0.24..."
[1] "pK = 0.25..."
[1] "pK = 0.26..."
[1] "pK = 0.27..."
[1] "pK = 0.28..."
[1] "pK = 0.29..."
[1] "pK = 0.3..."
[1] "Creating artificial doublets for pN = 25%"
[1] "Creating Seurat object..."
[1] "Normalizing Seurat object..."
Normalizing layer: counts
Performing log-normalization
0%   10   20   30   40   50   60   70   80   90   100%
[----|----|----|----|----|----|----|----|----|----|
**************************************************|
[1] "Finding variable genes..."
Finding variable features for layer counts
Calculating gene variances
0%   10   20   30   40   50   60   70   80   90   100%
[----|----|----|----|----|----|----|----|----|----|
**************************************************|
Calculating feature variances of standardized and clipped values
0%   10   20   30   40   50   60   70   80   90   100%
[----|----|----|----|----|----|----|----|----|----|
**************************************************|
[1] "Scaling data..."
Centering and scaling data matrix

  |                                                                                                                                                                                                                     
  |                                                                                                                                                                                                               |   0%
  |                                                                                                                                                                                                                     
  |========================================================================================================                                                                                                       |  50%
  |                                                                                                                                                                                                                     
  |===============================================================================================================================================================================================================| 100%
[1] "Running PCA..."
[1] "Calculating PC distance matrix..."
[1] "Defining neighborhoods..."
[1] "Computing pANN across all pK..."
[1] "pK = 0.005..."
[1] "pK = 0.01..."
[1] "pK = 0.02..."
[1] "pK = 0.03..."
[1] "pK = 0.04..."
[1] "pK = 0.05..."
[1] "pK = 0.06..."
[1] "pK = 0.07..."
[1] "pK = 0.08..."
[1] "pK = 0.09..."
[1] "pK = 0.1..."
[1] "pK = 0.11..."
[1] "pK = 0.12..."
[1] "pK = 0.13..."
[1] "pK = 0.14..."
[1] "pK = 0.15..."
[1] "pK = 0.16..."
[1] "pK = 0.17..."
[1] "pK = 0.18..."
[1] "pK = 0.19..."
[1] "pK = 0.2..."
[1] "pK = 0.21..."
[1] "pK = 0.22..."
[1] "pK = 0.23..."
[1] "pK = 0.24..."
[1] "pK = 0.25..."
[1] "pK = 0.26..."
[1] "pK = 0.27..."
[1] "pK = 0.28..."
[1] "pK = 0.29..."
[1] "pK = 0.3..."
[1] "Creating artificial doublets for pN = 30%"
[1] "Creating Seurat object..."
[1] "Normalizing Seurat object..."
Normalizing layer: counts
Performing log-normalization
0%   10   20   30   40   50   60   70   80   90   100%
[----|----|----|----|----|----|----|----|----|----|
**************************************************|
[1] "Finding variable genes..."
Finding variable features for layer counts
Calculating gene variances
0%   10   20   30   40   50   60   70   80   90   100%
[----|----|----|----|----|----|----|----|----|----|
**************************************************|
Calculating feature variances of standardized and clipped values
0%   10   20   30   40   50   60   70   80   90   100%
[----|----|----|----|----|----|----|----|----|----|
**************************************************|
[1] "Scaling data..."
Centering and scaling data matrix

  |                                                                                                                                                                                                                     
  |                                                                                                                                                                                                               |   0%
  |                                                                                                                                                                                                                     
  |========================================================================================================                                                                                                       |  50%
  |                                                                                                                                                                                                                     
  |===============================================================================================================================================================================================================| 100%
[1] "Running PCA..."
[1] "Calculating PC distance matrix..."
[1] "Defining neighborhoods..."
[1] "Computing pANN across all pK..."
[1] "pK = 0.005..."
[1] "pK = 0.01..."
[1] "pK = 0.02..."
[1] "pK = 0.03..."
[1] "pK = 0.04..."
[1] "pK = 0.05..."
[1] "pK = 0.06..."
[1] "pK = 0.07..."
[1] "pK = 0.08..."
[1] "pK = 0.09..."
[1] "pK = 0.1..."
[1] "pK = 0.11..."
[1] "pK = 0.12..."
[1] "pK = 0.13..."
[1] "pK = 0.14..."
[1] "pK = 0.15..."
[1] "pK = 0.16..."
[1] "pK = 0.17..."
[1] "pK = 0.18..."
[1] "pK = 0.19..."
[1] "pK = 0.2..."
[1] "pK = 0.21..."
[1] "pK = 0.22..."
[1] "pK = 0.23..."
[1] "pK = 0.24..."
[1] "pK = 0.25..."
[1] "pK = 0.26..."
[1] "pK = 0.27..."
[1] "pK = 0.28..."
[1] "pK = 0.29..."
[1] "pK = 0.3..."

NULL
[1] "Selected pK: 0.005"
[1] "Creating 835 artificial doublets..."
[1] "Creating Seurat object..."
[1] "Normalizing Seurat object..."
Normalizing layer: counts
Performing log-normalization
0%   10   20   30   40   50   60   70   80   90   100%
[----|----|----|----|----|----|----|----|----|----|
**************************************************|
[1] "Finding variable genes..."
Finding variable features for layer counts
Calculating gene variances
0%   10   20   30   40   50   60   70   80   90   100%
[----|----|----|----|----|----|----|----|----|----|
**************************************************|
Calculating feature variances of standardized and clipped values
0%   10   20   30   40   50   60   70   80   90   100%
[----|----|----|----|----|----|----|----|----|----|
**************************************************|
[1] "Scaling data..."
Centering and scaling data matrix

  |                                                                                                                                                                                                                     
  |                                                                                                                                                                                                               |   0%
  |                                                                                                                                                                                                                     
  |========================================================================================================                                                                                                       |  50%
  |                                                                                                                                                                                                                     
  |===============================================================================================================================================================================================================| 100%
[1] "Running PCA..."
[1] "Calculating PC distance matrix..."
[1] "Computing pANN..."
[1] "Classifying doublets.."

Doublet Singlet 
    117    3222 
[1] "Processing sample: 22"
[1] 55357  3340
[1] "Creating artificial doublets for pN = 5%"
[1] "Creating Seurat object..."
[1] "Normalizing Seurat object..."
Normalizing layer: counts
Performing log-normalization
0%   10   20   30   40   50   60   70   80   90   100%
[----|----|----|----|----|----|----|----|----|----|
**************************************************|
[1] "Finding variable genes..."
Finding variable features for layer counts
Calculating gene variances
0%   10   20   30   40   50   60   70   80   90   100%
[----|----|----|----|----|----|----|----|----|----|
**************************************************|
Calculating feature variances of standardized and clipped values
0%   10   20   30   40   50   60   70   80   90   100%
[----|----|----|----|----|----|----|----|----|----|
**************************************************|
[1] "Scaling data..."
Centering and scaling data matrix

  |                                                                                                                                                                                                                     
  |                                                                                                                                                                                                               |   0%
  |                                                                                                                                                                                                                     
  |========================================================================================================                                                                                                       |  50%
  |                                                                                                                                                                                                                     
  |===============================================================================================================================================================================================================| 100%
[1] "Running PCA..."
[1] "Calculating PC distance matrix..."
[1] "Defining neighborhoods..."
[1] "Computing pANN across all pK..."
[1] "pK = 0.005..."
[1] "pK = 0.01..."
[1] "pK = 0.02..."
[1] "pK = 0.03..."
[1] "pK = 0.04..."
[1] "pK = 0.05..."
[1] "pK = 0.06..."
[1] "pK = 0.07..."
[1] "pK = 0.08..."
[1] "pK = 0.09..."
[1] "pK = 0.1..."
[1] "pK = 0.11..."
[1] "pK = 0.12..."
[1] "pK = 0.13..."
[1] "pK = 0.14..."
[1] "pK = 0.15..."
[1] "pK = 0.16..."
[1] "pK = 0.17..."
[1] "pK = 0.18..."
[1] "pK = 0.19..."
[1] "pK = 0.2..."
[1] "pK = 0.21..."
[1] "pK = 0.22..."
[1] "pK = 0.23..."
[1] "pK = 0.24..."
[1] "pK = 0.25..."
[1] "pK = 0.26..."
[1] "pK = 0.27..."
[1] "pK = 0.28..."
[1] "pK = 0.29..."
[1] "pK = 0.3..."
[1] "Creating artificial doublets for pN = 10%"
[1] "Creating Seurat object..."
[1] "Normalizing Seurat object..."
Normalizing layer: counts
Performing log-normalization
0%   10   20   30   40   50   60   70   80   90   100%
[----|----|----|----|----|----|----|----|----|----|
**************************************************|
[1] "Finding variable genes..."
Finding variable features for layer counts
Calculating gene variances
0%   10   20   30   40   50   60   70   80   90   100%
[----|----|----|----|----|----|----|----|----|----|
**************************************************|
Calculating feature variances of standardized and clipped values
0%   10   20   30   40   50   60   70   80   90   100%
[----|----|----|----|----|----|----|----|----|----|
**************************************************|
[1] "Scaling data..."
Centering and scaling data matrix

  |                                                                                                                                                                                                                     
  |                                                                                                                                                                                                               |   0%
  |                                                                                                                                                                                                                     
  |========================================================================================================                                                                                                       |  50%
  |                                                                                                                                                                                                                     
  |===============================================================================================================================================================================================================| 100%
[1] "Running PCA..."
[1] "Calculating PC distance matrix..."
[1] "Defining neighborhoods..."
[1] "Computing pANN across all pK..."
[1] "pK = 0.005..."
[1] "pK = 0.01..."
[1] "pK = 0.02..."
[1] "pK = 0.03..."
[1] "pK = 0.04..."
[1] "pK = 0.05..."
[1] "pK = 0.06..."
[1] "pK = 0.07..."
[1] "pK = 0.08..."
[1] "pK = 0.09..."
[1] "pK = 0.1..."
[1] "pK = 0.11..."
[1] "pK = 0.12..."
[1] "pK = 0.13..."
[1] "pK = 0.14..."
[1] "pK = 0.15..."
[1] "pK = 0.16..."
[1] "pK = 0.17..."
[1] "pK = 0.18..."
[1] "pK = 0.19..."
[1] "pK = 0.2..."
[1] "pK = 0.21..."
[1] "pK = 0.22..."
[1] "pK = 0.23..."
[1] "pK = 0.24..."
[1] "pK = 0.25..."
[1] "pK = 0.26..."
[1] "pK = 0.27..."
[1] "pK = 0.28..."
[1] "pK = 0.29..."
[1] "pK = 0.3..."
[1] "Creating artificial doublets for pN = 15%"
[1] "Creating Seurat object..."
[1] "Normalizing Seurat object..."
Normalizing layer: counts
Performing log-normalization
0%   10   20   30   40   50   60   70   80   90   100%
[----|----|----|----|----|----|----|----|----|----|
**************************************************|
[1] "Finding variable genes..."
Finding variable features for layer counts
Calculating gene variances
0%   10   20   30   40   50   60   70   80   90   100%
[----|----|----|----|----|----|----|----|----|----|
**************************************************|
Calculating feature variances of standardized and clipped values
0%   10   20   30   40   50   60   70   80   90   100%
[----|----|----|----|----|----|----|----|----|----|
**************************************************|
[1] "Scaling data..."
Centering and scaling data matrix

  |                                                                                                                                                                                                                     
  |                                                                                                                                                                                                               |   0%
  |                                                                                                                                                                                                                     
  |========================================================================================================                                                                                                       |  50%
  |                                                                                                                                                                                                                     
  |===============================================================================================================================================================================================================| 100%
[1] "Running PCA..."
[1] "Calculating PC distance matrix..."
[1] "Defining neighborhoods..."
[1] "Computing pANN across all pK..."
[1] "pK = 0.005..."
[1] "pK = 0.01..."
[1] "pK = 0.02..."
[1] "pK = 0.03..."
[1] "pK = 0.04..."
[1] "pK = 0.05..."
[1] "pK = 0.06..."
[1] "pK = 0.07..."
[1] "pK = 0.08..."
[1] "pK = 0.09..."
[1] "pK = 0.1..."
[1] "pK = 0.11..."
[1] "pK = 0.12..."
[1] "pK = 0.13..."
[1] "pK = 0.14..."
[1] "pK = 0.15..."
[1] "pK = 0.16..."
[1] "pK = 0.17..."
[1] "pK = 0.18..."
[1] "pK = 0.19..."
[1] "pK = 0.2..."
[1] "pK = 0.21..."
[1] "pK = 0.22..."
[1] "pK = 0.23..."
[1] "pK = 0.24..."
[1] "pK = 0.25..."
[1] "pK = 0.26..."
[1] "pK = 0.27..."
[1] "pK = 0.28..."
[1] "pK = 0.29..."
[1] "pK = 0.3..."
[1] "Creating artificial doublets for pN = 20%"
[1] "Creating Seurat object..."
[1] "Normalizing Seurat object..."
Normalizing layer: counts
Performing log-normalization
0%   10   20   30   40   50   60   70   80   90   100%
[----|----|----|----|----|----|----|----|----|----|
**************************************************|
[1] "Finding variable genes..."
Finding variable features for layer counts
Calculating gene variances
0%   10   20   30   40   50   60   70   80   90   100%
[----|----|----|----|----|----|----|----|----|----|
**************************************************|
Calculating feature variances of standardized and clipped values
0%   10   20   30   40   50   60   70   80   90   100%
[----|----|----|----|----|----|----|----|----|----|
**************************************************|
[1] "Scaling data..."
Centering and scaling data matrix

  |                                                                                                                                                                                                                     
  |                                                                                                                                                                                                               |   0%
  |                                                                                                                                                                                                                     
  |========================================================================================================                                                                                                       |  50%
  |                                                                                                                                                                                                                     
  |===============================================================================================================================================================================================================| 100%
[1] "Running PCA..."
[1] "Calculating PC distance matrix..."
[1] "Defining neighborhoods..."
[1] "Computing pANN across all pK..."
[1] "pK = 0.005..."
[1] "pK = 0.01..."
[1] "pK = 0.02..."
[1] "pK = 0.03..."
[1] "pK = 0.04..."
[1] "pK = 0.05..."
[1] "pK = 0.06..."
[1] "pK = 0.07..."
[1] "pK = 0.08..."
[1] "pK = 0.09..."
[1] "pK = 0.1..."
[1] "pK = 0.11..."
[1] "pK = 0.12..."
[1] "pK = 0.13..."
[1] "pK = 0.14..."
[1] "pK = 0.15..."
[1] "pK = 0.16..."
[1] "pK = 0.17..."
[1] "pK = 0.18..."
[1] "pK = 0.19..."
[1] "pK = 0.2..."
[1] "pK = 0.21..."
[1] "pK = 0.22..."
[1] "pK = 0.23..."
[1] "pK = 0.24..."
[1] "pK = 0.25..."
[1] "pK = 0.26..."
[1] "pK = 0.27..."
[1] "pK = 0.28..."
[1] "pK = 0.29..."
[1] "pK = 0.3..."
[1] "Creating artificial doublets for pN = 25%"
[1] "Creating Seurat object..."
[1] "Normalizing Seurat object..."
Normalizing layer: counts
Performing log-normalization
0%   10   20   30   40   50   60   70   80   90   100%
[----|----|----|----|----|----|----|----|----|----|
**************************************************|
[1] "Finding variable genes..."
Finding variable features for layer counts
Calculating gene variances
0%   10   20   30   40   50   60   70   80   90   100%
[----|----|----|----|----|----|----|----|----|----|
**************************************************|
Calculating feature variances of standardized and clipped values
0%   10   20   30   40   50   60   70   80   90   100%
[----|----|----|----|----|----|----|----|----|----|
**************************************************|
[1] "Scaling data..."
Centering and scaling data matrix

  |                                                                                                                                                                                                                     
  |                                                                                                                                                                                                               |   0%
  |                                                                                                                                                                                                                     
  |========================================================================================================                                                                                                       |  50%
  |                                                                                                                                                                                                                     
  |===============================================================================================================================================================================================================| 100%
[1] "Running PCA..."
[1] "Calculating PC distance matrix..."
[1] "Defining neighborhoods..."
[1] "Computing pANN across all pK..."
[1] "pK = 0.005..."
[1] "pK = 0.01..."
[1] "pK = 0.02..."
[1] "pK = 0.03..."
[1] "pK = 0.04..."
[1] "pK = 0.05..."
[1] "pK = 0.06..."
[1] "pK = 0.07..."
[1] "pK = 0.08..."
[1] "pK = 0.09..."
[1] "pK = 0.1..."
[1] "pK = 0.11..."
[1] "pK = 0.12..."
[1] "pK = 0.13..."
[1] "pK = 0.14..."
[1] "pK = 0.15..."
[1] "pK = 0.16..."
[1] "pK = 0.17..."
[1] "pK = 0.18..."
[1] "pK = 0.19..."
[1] "pK = 0.2..."
[1] "pK = 0.21..."
[1] "pK = 0.22..."
[1] "pK = 0.23..."
[1] "pK = 0.24..."
[1] "pK = 0.25..."
[1] "pK = 0.26..."
[1] "pK = 0.27..."
[1] "pK = 0.28..."
[1] "pK = 0.29..."
[1] "pK = 0.3..."
[1] "Creating artificial doublets for pN = 30%"
[1] "Creating Seurat object..."
[1] "Normalizing Seurat object..."
Normalizing layer: counts
Performing log-normalization
0%   10   20   30   40   50   60   70   80   90   100%
[----|----|----|----|----|----|----|----|----|----|
**************************************************|
[1] "Finding variable genes..."
Finding variable features for layer counts
Calculating gene variances
0%   10   20   30   40   50   60   70   80   90   100%
[----|----|----|----|----|----|----|----|----|----|
**************************************************|
Calculating feature variances of standardized and clipped values
0%   10   20   30   40   50   60   70   80   90   100%
[----|----|----|----|----|----|----|----|----|----|
**************************************************|
[1] "Scaling data..."
Centering and scaling data matrix

  |                                                                                                                                                                                                                     
  |                                                                                                                                                                                                               |   0%
  |                                                                                                                                                                                                                     
  |========================================================================================================                                                                                                       |  50%
  |                                                                                                                                                                                                                     
  |===============================================================================================================================================================================================================| 100%
[1] "Running PCA..."
[1] "Calculating PC distance matrix..."
[1] "Defining neighborhoods..."
[1] "Computing pANN across all pK..."
[1] "pK = 0.005..."
[1] "pK = 0.01..."
[1] "pK = 0.02..."
[1] "pK = 0.03..."
[1] "pK = 0.04..."
[1] "pK = 0.05..."
[1] "pK = 0.06..."
[1] "pK = 0.07..."
[1] "pK = 0.08..."
[1] "pK = 0.09..."
[1] "pK = 0.1..."
[1] "pK = 0.11..."
[1] "pK = 0.12..."
[1] "pK = 0.13..."
[1] "pK = 0.14..."
[1] "pK = 0.15..."
[1] "pK = 0.16..."
[1] "pK = 0.17..."
[1] "pK = 0.18..."
[1] "pK = 0.19..."
[1] "pK = 0.2..."
[1] "pK = 0.21..."
[1] "pK = 0.22..."
[1] "pK = 0.23..."
[1] "pK = 0.24..."
[1] "pK = 0.25..."
[1] "pK = 0.26..."
[1] "pK = 0.27..."
[1] "pK = 0.28..."
[1] "pK = 0.29..."
[1] "pK = 0.3..."

NULL
[1] "Selected pK: 0.005"
[1] "Creating 835 artificial doublets..."
[1] "Creating Seurat object..."
[1] "Normalizing Seurat object..."
Normalizing layer: counts
Performing log-normalization
0%   10   20   30   40   50   60   70   80   90   100%
[----|----|----|----|----|----|----|----|----|----|
**************************************************|
[1] "Finding variable genes..."
Finding variable features for layer counts
Calculating gene variances
0%   10   20   30   40   50   60   70   80   90   100%
[----|----|----|----|----|----|----|----|----|----|
**************************************************|
Calculating feature variances of standardized and clipped values
0%   10   20   30   40   50   60   70   80   90   100%
[----|----|----|----|----|----|----|----|----|----|
**************************************************|
[1] "Scaling data..."
Centering and scaling data matrix

  |                                                                                                                                                                                                                     
  |                                                                                                                                                                                                               |   0%
  |                                                                                                                                                                                                                     
  |========================================================================================================                                                                                                       |  50%
  |                                                                                                                                                                                                                     
  |===============================================================================================================================================================================================================| 100%
[1] "Running PCA..."
[1] "Calculating PC distance matrix..."
[1] "Computing pANN..."
[1] "Classifying doublets.."

Doublet Singlet 
    117    3223 

# Assign names
names(srat.list.wodoublets) <- names(srat_list)[!sapply(srat.list.wodoublets, is.null)]

#saveRDS(srat.list.wodoublets, file = "~/Git/P24-203/data/srat_list_wo_doublets.rds")

stopCluster(cl)

Combine clean seurat objects

#srat.list.wodoublets <- readRDS("~/Git/P24-203/data/srat_list_wo_doublets.rds")

joined_seurat <- merge(srat.list.wodoublets[[1]], y = srat.list.wodoublets[-1], merge.data = TRUE)

Normalize joined data set

Plot before integration

# Add a new column to indicate the study
joined_seurat$study <- ifelse(grepl("SRR", colnames(joined_seurat)), "GSE206144", "GSE166649")

before_int <- DimPlot(joined_seurat,reduction = "umap", group.by = "study") + plot_annotation(title = "Both data sets, before integration")
print(before_int)
ggsave(here("img/before_integration.png"),before_int)

Integration

joined_seurat <- joined_seurat %>% RunHarmony("orig.ident", plot_convergence = T)
0%   10   20   30   40   50   60   70   80   90   100%
[----|----|----|----|----|----|----|----|----|----|
**************************************************|
0%   10   20   30   40   50   60   70   80   90   100%
[----|----|----|----|----|----|----|----|----|----|
**************************************************|
0%   10   20   30   40   50   60   70   80   90   100%
[----|----|----|----|----|----|----|----|----|----|
**************************************************|
0%   10   20   30   40   50   60   70   80   90   100%
[----|----|----|----|----|----|----|----|----|----|
**************************************************|
0%   10   20   30   40   50   60   70   80   90   100%
[----|----|----|----|----|----|----|----|----|----|
**************************************************|
0%   10   20   30   40   50   60   70   80   90   100%
[----|----|----|----|----|----|----|----|----|----|
**************************************************|
0%   10   20   30   40   50   60   70   80   90   100%
[----|----|----|----|----|----|----|----|----|----|
**************************************************|
0%   10   20   30   40   50   60   70   80   90   100%
[----|----|----|----|----|----|----|----|----|----|
**************************************************|
0%   10   20   30   40   50   60   70   80   90   100%
[----|----|----|----|----|----|----|----|----|----|
**************************************************|
0%   10   20   30   40   50   60   70   80   90   100%
[----|----|----|----|----|----|----|----|----|----|
**************************************************|
0%   10   20   30   40   50   60   70   80   90   100%
[----|----|----|----|----|----|----|----|----|----|
**************************************************|
0%   10   20   30   40   50   60   70   80   90   100%
[----|----|----|----|----|----|----|----|----|----|
**************************************************|

Check embeddings

harmony_embeddings <- Embeddings(joined_seurat, 'harmony')
harmony_embeddings[1:5, 1:5]
                       harmony_1  harmony_2  harmony_3  harmony_4  harmony_5
12W_AAACCTGAGCAATCTC-1 -4.287772  0.1029330  0.5271794  0.4008248  8.0187655
12W_AAACCTGAGCAGGCTA-1 -4.070411  1.4025392  1.8012391 -0.1661503 -2.0229242
12W_AAACCTGAGCTAACTC-1 -3.910964 -0.2836713  2.7954070  1.0055153  3.3941756
12W_AAACCTGAGGGTATCG-1  7.291411 -2.2949046 -7.3171870  4.3052732 -0.2903491
12W_AAACCTGAGTACCGGA-1 -4.690289  0.7119125  0.5414009 -0.6127708  0.5497783

Check PCA plot after integration


p1 <- DimPlot(object = joined_seurat, reduction = "harmony", pt.size = .1, group.by = "orig.ident") + NoLegend()
p2 <- VlnPlot(object = joined_seurat, features = "harmony_1", group.by = "orig.ident", pt.size = .1) + NoLegend()
plot_grid(p1,p2)

UMAP and clustering

joined_seurat <- joined_seurat %>% 
  RunUMAP(reduction = "harmony", dims = 1:30, verbose = FALSE) %>% 
  FindNeighbors(reduction = "harmony", k.param = 10, dims = 1:30) %>% 
  FindClusters() %>% 
  identity()
Modularity Optimizer version 1.3.0 by Ludo Waltman and Nees Jan van Eck

Number of nodes: 98428
Number of edges: 1482087

Running Louvain algorithm...
0%   10   20   30   40   50   60   70   80   90   100%
[----|----|----|----|----|----|----|----|----|----|
**************************************************|
Maximum modularity in 10 random starts: 0.9394
Number of communities: 41
Elapsed time: 40 seconds

Plot per sample after integration

DimPlot(joined_seurat, reduction = "umap", group.by = "orig.ident", pt.size = .1, split.by = 'orig.ident') + NoLegend()

Plot data sets after integration

Plot the Seurat clusters

joined_seurat <- SetIdent(joined_seurat, value = "seurat_clusters")
d <- DimPlot(joined_seurat,label = TRUE) + NoLegend()
print(d)
ggsave(here("img/seurat_clusters_all_cells.png"), d)
Saving 7.29 x 4.51 in image

Cluster content

p <- plot_integrated_clusters(joined_seurat)
print(p)
ggsave(here("img/clus_comp_all.png"),p)

Annotation NTS vs AP


ap_markers <- read.csv("~/Git/P24-203/doc/marker_genes_AP.csv", header = TRUE, stringsAsFactors = FALSE)
nts_markers <- read.csv("~/Git/P24-203/doc/marker_genes_NTS.csv", header = TRUE, stringsAsFactors = FALSE)

# Ensure the marker genes are present in your dataset
ap_markers <- intersect(unlist(ap_markers$gene), rownames(joined_seurat@assays$RNA))
nts_markers <- intersect(unlist(nts_markers$gene), rownames(joined_seurat@assays$RNA))

cluster_avg_expression <- AggregateExpression(joined_seurat, features = c(ap_markers, nts_markers), group.by = "seurat_clusters")$RNA

ap_expression <- cluster_avg_expression[ap_markers, ]
nts_expression <- cluster_avg_expression[nts_markers, ]

ap_cluster_scores <- colMeans(ap_expression, na.rm = TRUE)
nts_cluster_scores <- colMeans(nts_expression, na.rm = TRUE)

cluster_annotations <- ifelse(ap_cluster_scores > nts_cluster_scores, "AP", "NTS")
names(cluster_annotations) <- 0:33
mapped_annotations <- cluster_annotations[as.character(joined_seurat$seurat_clusters)]
names(mapped_annotations) <- rownames(joined_seurat@meta.data)  # Set names to cell IDs
joined_seurat$AP_NTS_Cluster_Annotation <- mapped_annotations[rownames(joined_seurat@meta.data)]

# Visualization with annotations
ap_nts <- DimPlot(joined_seurat, reduction = "umap", group.by = "AP_NTS_Cluster_Annotation", label = TRUE) +
  theme(legend.position = "none") +
  xlab("umap1") + ylab("umap2")

ggsave(here("img/ap_nts_all_cells.png"), ap_nts)
saveRDS(joined_seurat, "~/Git/P24-203/data/joined_seurat_integrated.rds")

GOI expression in all cells

ft1 <- FeaturePlot(joined_seurat, features = c("Gfral", "Adcyap1"), min.cutoff = "q10")
ft2 <- FeaturePlot(joined_seurat, features = c("Gfral", "Adcyap1"), blend = TRUE, pt.size = 0.1) +
  theme(plot.title = element_text(hjust = 0.5))
gfral_cells <- WhichCells(joined_seurat, expression = Gfral > 0)
adcyap1_cells <- WhichCells(joined_seurat, expression = Adcyap1 > 0)

print(ft1)

print(ft2)


# Find cells that express both genes
overlap_cells <- intersect(gfral_cells, adcyap1_cells)

# Compute percentages
total_cells <- length(Cells(joined_seurat))
gfral_pct <- length(gfral_cells) / total_cells * 100
adcyap1_pct <- length(adcyap1_cells) / total_cells * 100
overlap_pct <- length(overlap_cells) / total_cells * 100

# Print results
cat("Percentage of cells expressing Gfral:", round(gfral_pct, 2), "%\n")
Percentage of cells expressing Gfral: 0.91 %
cat("Percentage of cells expressing Adcyap1:", round(adcyap1_pct, 2), "%\n")
Percentage of cells expressing Adcyap1: 7.05 %
cat("Percentage of cells expressing both genes:", round(overlap_pct, 2), "%\n")
Percentage of cells expressing both genes: 0.07 %

Create SCE


# Extract all layers containing raw counts
count_layers <- grep("^counts\\.", names(joined_seurat@assays$RNA@layers), value = TRUE)

# Merge all count matrices
counts_combined <- do.call(cbind, lapply(count_layers, function(layer) {
  joined_seurat@assays$RNA@layers[[layer]]
}))

# Create SingleCellExperiment object
sce <- SingleCellExperiment(
  assays = list(counts = counts_combined),
  colData = joined_seurat@meta.data  # Transfer metadata from Seurat
)

# Normalize counts
sce <- logNormCounts(sce)
assayNames(sce)
[1] "counts"    "logcounts"
# Save for later use
#saveRDS(sce, here("data/joined_sce.rds"))

Non-neuron markers

non_neurons <- list.files(here("data/csv/non_neurons"), pattern = "*.csv", full.names = TRUE)

non_neuron_data <- lapply(non_neurons, read.csv)
names(non_neuron_data) <- gsub("*.csv", "", basename(non_neurons))
cellex_cutoff <- 0.9
expr_proportion_cutoff <- 10

# Loop through the list and filter each data frame
non_neuron_filtered_data <- lapply(non_neuron_data, function(df) {
  subset(df, cellex_score >= cellex_cutoff & expr_proportion >= expr_proportion_cutoff)
})

output_dir <- here("data/marker_genes")  # Directory to save the files

lapply(seq_along(non_neuron_filtered_data), function(i) {
  output_file <- file.path(output_dir, paste0("marker_genes_", names(non_neuron_filtered_data)[i]))
  write_csv(as.data.frame(non_neuron_filtered_data[[i]]$gene), output_file, col_names = FALSE)
})
[[1]]

[[2]]

[[3]]

[[4]]

[[5]]

[[6]]

[[7]]

[[8]]
NA

Neuron markers

neurons <- list.files(here("data/csv/neurons"), pattern = "*.csv", full.names = TRUE)

neuron_data <- lapply(neurons, read.csv)
names(neuron_data) <- gsub("*.csv", "", basename(neurons))
cellex_cutoff <- 0.9
expr_proportion_cutoff <- 10

# Loop through the list and filter each data frame
neuron_filtered_data <- lapply(neuron_data, function(df) {
  subset(df, cellex_score >= cellex_cutoff & expr_proportion >= expr_proportion_cutoff)
})

output_dir <- here("data/marker_genes")  # Directory to save the files

lapply(seq_along(neuron_filtered_data), function(i) {
  output_file <- file.path(output_dir, paste0("marker_genes_", names(neuron_filtered_data)[i]))
  write_csv(as.data.frame(neuron_filtered_data[[i]]$gene), output_file, col_names = FALSE)
})
[[1]]

[[2]]

[[3]]

[[4]]

[[5]]

[[6]]

[[7]]

[[8]]

[[9]]

[[10]]

[[11]]

[[12]]

[[13]]

[[14]]

[[15]]

[[16]]

[[17]]

[[18]]

[[19]]

[[20]]

[[21]]

[[22]]

[[23]]

[[24]]

[[25]]
NA

Cluster annotation (non-neurons + neurons)


# Define directory where your marker gene files are stored
marker_dir <- here("data/marker_genes")  # Update with your actual path

# List all marker gene files
marker_files <- list.files(marker_dir, pattern = "marker_genes_.*\\.csv", full.names = TRUE)

# Extract cell type names from the file names
cell_types <- gsub("marker_genes_|\\.csv", "", basename(marker_files))

# Read marker gene lists and assign cell type names
marker_gene_lists <- lapply(marker_files, function(file) {
  data <- read.csv(file, header = TRUE, stringsAsFactors = FALSE)
  unlist(data)  # Ensure the marker genes are a character vector
})
names(marker_gene_lists) <- cell_types  # Add cell type names to the list

# Ensure the marker genes are present in your dataset
filtered_marker_genes <- lapply(marker_gene_lists, function(genes) {
  intersect(genes, rownames(joined_seurat@assays$RNA))
})

all.sets <- lapply(names(filtered_marker_genes), function(x) {
    GeneSet(filtered_marker_genes[[x]], setName=x)        
})
all.sets <- GeneSetCollection(all.sets)

rownames(sce) <- rownames(joined_seurat)

rankings <- AUCell_buildRankings(counts(sce),
    plotStats=FALSE, verbose=FALSE)
View(neuron_filtered_data)
gc()
             used    (Mb)  gc trigger    (Mb)    max used    (Mb)
Ncells   15297692   817.0    27811662  1485.4    27811662  1485.4
Vcells 7035904363 53679.7 11126168598 84886.0 11123882628 84868.5
cell.aucs <- AUCell_calcAUC(all.sets, rankings)

results <- t(assay(cell.aucs))
head(results)
                        gene sets
cells                    astrocytes      chat1      chat2      chat3 endothelial_cells ependymal_cells      GABA1      GABA2      GABA3      GABA4      GABA5      GABA6      GABA7       Glu1      Glu10      Glu11
  12W_AAACCTGAGCAATCTC-1 0.03445615 0.02604065 0.08042950 0.01383441       0.007202778      0.01200336 0.18628054 0.11902217 0.23988479 0.13121053 0.06565670 0.07556280 0.00000000 0.10194507 0.07135224 0.04522212
  12W_AAACCTGAGCAGGCTA-1 0.02686626 0.02210029 0.02638265 0.01409830       0.001335524      0.02818291 0.08738462 0.20875157 0.05685946 0.08132843 0.07781006 0.00000000 0.05765700 0.15728109 0.00000000 0.09238441
  12W_AAACCTGAGCTAACTC-1 0.05134752 0.05896266 0.05109675 0.02782536       0.029915749      0.02529416 0.48405430 0.04948284 0.08673405 0.15741306 0.10298581 0.07064397 0.00000000 0.13675524 0.05097134 0.00000000
  12W_AAACCTGAGGGTATCG-1 0.20824507 0.02678780 0.01862321 0.01802096       0.033025936      0.03800849 0.00000000 0.01620167 0.02115843 0.03716835 0.05668111 0.02562013 0.00000000 0.02118212 0.07452006 0.04893926
  12W_AAACCTGAGTACCGGA-1 0.04208112 0.01013168 0.02163781 0.01976983       0.007361230      0.02916931 0.00000000 0.20527842 0.03249649 0.08709991 0.03138862 0.00000000 0.02130435 0.08320650 0.00000000 0.00000000
  12W_AAACCTGAGTAGGTGC-1 0.23705439 0.05609780 0.03504226 0.04560032       0.036113488      0.01664073 0.03395475 0.00000000 0.04563886 0.05207526 0.04246543 0.00000000 0.00000000 0.00000000 0.04908210 0.00000000
                        gene sets
cells                          Glu12      Glu13      Glu14      Glu15       Glu2        Glu3        Glu4       Glu5       Glu6        Glu7       Glu8       Glu9  microglia oligodendrocytes        OPCs
  12W_AAACCTGAGCAATCTC-1 0.000000000 0.10923648 0.05571635 0.00000000 0.00000000 0.019011407 0.007332123 0.01891525 0.05848240 0.006521739 0.00000000 0.00000000 0.00000000      0.078245905 0.251560413
  12W_AAACCTGAGCAGGCTA-1 0.000000000 0.00000000 0.00000000 0.00000000 0.09558592 0.002595208 0.068399274 0.02854257 0.14156877 0.066280193 0.06845411 0.10367288 0.00000000      0.085940498 0.113612629
  12W_AAACCTGAGCTAACTC-1 0.007601867 0.12420843 0.00000000 0.02241459 0.04554490 0.203633291 0.000000000 0.02677936 0.11768970 0.106473430 0.18072464 0.00000000 0.01087350      0.005577497 0.158032787
  12W_AAACCTGAGGGTATCG-1 0.044852662 0.08625837 0.13117635 0.00000000 0.03330283 0.000000000 0.034555354 0.02149799 0.00000000 0.039009662 0.00000000 0.01967614 0.02415624      0.033514504 0.036097956
  12W_AAACCTGAGTACCGGA-1 0.044127105 0.06024968 0.00000000 0.02626555 0.00000000 0.000000000 0.011019964 0.02982567 0.03044581 0.000000000 0.15147343 0.00000000 0.06281048      0.015624420 0.043812993
  12W_AAACCTGAGTAGGTGC-1 0.025031743 0.03202461 0.03550755 0.13043908 0.01834732 0.000000000 0.046780399 0.07281336 0.00000000 0.000000000 0.06371981 0.00000000 0.00000000      0.047647052 0.002048168
                        gene sets
cells                    tancyte-like_cells     VLMCs
  12W_AAACCTGAGCAATCTC-1         0.08270601 0.0000000
  12W_AAACCTGAGCAGGCTA-1         0.04070794 0.0000000
  12W_AAACCTGAGCTAACTC-1         0.06676103 0.0000000
  12W_AAACCTGAGGGTATCG-1         0.02631612 0.0000000
  12W_AAACCTGAGTACCGGA-1         0.02304696 0.0483083
  12W_AAACCTGAGTAGGTGC-1         0.04298759 0.0000000
saveRDS(results, here("data/cell_anno_results.rds"))

new.labels <- colnames(results)[max.col(results)]
tab <- table(new.labels, sce$seurat_clusters)

# Plot to see the distribution of AUCs across cells for each label

#plot_grid(AUCell_exploreThresholds(cell.aucs[2], plotHist=TRUE, assign=TRUE), 
#          AUCell_exploreThresholds(cell.aucs[10], plotHist=TRUE, assign=TRUE), 
#          AUCell_exploreThresholds(cell.aucs[15], plotHist=TRUE, assign=TRUE),
#          AUCell_exploreThresholds(cell.aucs[22], plotHist=TRUE, assign=TRUE))

Plot cluster annotation

joined_seurat$predicted_cell_type <- new.labels

# Plot with predicted cell types
options(ggrepel.max.overlaps = Inf)
all_cells <- DimPlot(joined_seurat, group.by = "predicted_cell_type", label = TRUE, repel = TRUE) + 
  ggtitle("Predicted Cell Type Annotations")
print(all_cells)
ggsave(here("img/all_cells_plot.png"), all_cells)

Gene expression overlap by cluster

# Get cell type identities
Idents(joined_seurat) <- "predicted_cell_type"  # Replace with the correct metadata column for clusters

# Function to compute percentages per cell type
get_overlap_by_cluster <- function(seurat_obj, gene1, gene2) {
  cluster_levels <- levels(seurat_obj)
  results <- data.frame(Cluster = character(), Gfral_pct = numeric(), Adcyap1_pct = numeric(), Both_pct = numeric())
  
  for (cluster in cluster_levels) {
    cells_in_cluster <- WhichCells(seurat_obj, idents = cluster)
    
    gfral_cells <- WhichCells(seurat_obj, expression = !!sym(gene1) > 0)
    adcyap1_cells <- WhichCells(seurat_obj, expression = !!sym(gene2) > 0)
    
    overlap_cells <- intersect(gfral_cells, adcyap1_cells)
    
    gfral_pct <- round(length(intersect(cells_in_cluster, gfral_cells)) / length(cells_in_cluster) * 100,3)
    adcyap1_pct <- round(length(intersect(cells_in_cluster, adcyap1_cells)) / length(cells_in_cluster) * 100,3)
    overlap_pct <- round(length(intersect(cells_in_cluster, overlap_cells)) / length(cells_in_cluster) * 100,3)
    
    results <- rbind(results, data.frame(Cluster = cluster, Gfral_pct = gfral_pct, Adcyap1_pct = adcyap1_pct, Both_pct = overlap_pct))
  }
  
  return(results)
}

# Run the function
overlap_results <- get_overlap_by_cluster(joined_seurat, "Gfral", "Adcyap1")
print(overlap_results)
NA

Subset to keep annotated neurons

neuron_types = c("chat1","chat2","chat3","Glu1","Glu2","Glu3","Glu4","Glu5","Glu6",
                 "Glu7","Glu8","Glu9","Glu10","Glu11","Glu12","Glu13","Glu14","Glu15",
                 "GABA1","GABA2","GABA3","GABA4","GABA5","GABA6","GABA7")

non_neuron_types = c("astrocytes","OPCs","ependymal_cells","endothelial_cells",
                     "oligodendrocytes","tancyte-like_cells","microglia","VLMCs")

joined_seurat$neuron_status <- ifelse(joined_seurat$predicted_cell_type %in% neuron_types, "neuron", "non-neuron")


neuron_seurat <- subset(joined_seurat, subset = neuron_status == "neuron")


overlap_results_neuron <- get_overlap_by_cluster(neuron_seurat, "Gfral", "Adcyap1")
print(overlap_results_neuron)

DimPlot(neuron_seurat, group.by = "predicted_cell_type", label = TRUE, repel = TRUE) + 
  ggtitle("Predicted Cell Type Annotations")

Re-scale and re-cluster neurons


neuron_seurat <- FindVariableFeatures(object = neuron_seurat, selection.method = "vst", nfeatures = 2000, verbose = FALSE)
neuron_seurat <- ScaleData(neuron_seurat, vars.to.regress = "nCount_RNA", verbose = FALSE)
neuron_seurat <- RunPCA(neuron_seurat, npcs = 30, verbose = FALSE)
ElbowPlot(neuron_seurat)

neuron_seurat <- RunUMAP(neuron_seurat, reduction = "pca", dims = 1:10, verbose = F)

neuron_seurat <- FindNeighbors(object = neuron_seurat, dims = 1:30, verbose = FALSE)
neuron_seurat <- FindClusters(object = neuron_seurat, resolution = 0.8, verbose = FALSE) 

neuron_seurat <- SetIdent(neuron_seurat, value = "RNA_snn_res.0.8")
clus <- DimPlot(neuron_seurat,label = TRUE) + NoLegend()
print(clus)
ggsave(here("img/neuron_clusters_res_0.8.png"), clus)


cluster_assignments <- neuron_seurat@meta.data$seurat_clusters

names(cluster_assignments) <- colnames(neuron_seurat)

saveRDS(neuron_seurat, here("data/neuron_subset.rds"))

Neuron cluster composition

neuron_clus_comp <- plot_integrated_clusters(neuron_seurat)
print(neuron_clus_comp)
ggsave(here("img/neuron_cluster_comp.png"), neuron_clus_comp)

Plot the expression values for Gfral/Adcyap1 in neurons

ft1 <- FeaturePlot(neuron_seurat, features = c("Gfral", "Adcyap1"), min.cutoff = "q10")
ft2 <- FeaturePlot(neuron_seurat, features = c("Gfral", "Adcyap1"), blend = TRUE, pt.size = 0.1) +
  theme(plot.title = element_text(hjust = 0.5))
gfral_cells <- WhichCells(neuron_seurat, expression = Gfral > 0)
adcyap1_cells <- WhichCells(neuron_seurat, expression = Adcyap1 > 0)

print(ft1)

print(ft2)
ggsave(here("img/expression_gfral_adcyap1_neurons.png"), ft1)
ggsave(here("img/Co-expression_gfral_adcyap1_neurons.png"), ft2)

Check AP/NTS annotation in neurons

DimPlot(neuron_seurat, group.by = "AP_NTS_Cluster_Annotation", label = TRUE, repel = TRUE) + 
  ggtitle("Neuron AP or NTS")

Re-annotate neuron clusters

# Create SingleCellExperiment object
count_layers <- grep("^counts\\.", names(neuron_seurat@assays$RNA@layers), value = TRUE)

# Merge all count matrices
counts_combined <- do.call(cbind, lapply(count_layers, function(layer) {
  neuron_seurat@assays$RNA@layers[[layer]]
}))

sce_neuron <- SingleCellExperiment(
  assays = list(counts = counts_combined),
  colData = neuron_seurat@meta.data  # Transfer metadata from Seurat
)

# Normalize counts
sce_neuron <- logNormCounts(sce_neuron)
assayNames(sce_neuron)
[1] "counts"    "logcounts"
rownames(sce_neuron) <- rownames(neuron_seurat)

saveRDS(sce_neuron, here("data/sce_neuron.rds"))
sce_neuron <- readRDS(here("data/sce_neuron.rds"))
neuron_seurat <- readRDS(here("data/neuron_subset.rds"))

## MARKER GENE SET ## 
# Load marker genes
marker_dir <- here("data/neuron_marker_genes")  # Update with your actual path

# List all marker gene files
marker_files <- list.files(marker_dir, pattern = "marker_genes_.*\\.csv", full.names = TRUE)

# Extract cell type names from the file names
cell_types <- gsub("marker_genes_|\\.csv", "", basename(marker_files))

# Read marker gene lists and assign cell type names
marker_gene_lists <- lapply(marker_files, function(file) {
  data <- read.csv(file, header = TRUE, stringsAsFactors = FALSE)
  unlist(data)  # Ensure the marker genes are a character vector
})
names(marker_gene_lists) <- cell_types  # Add cell type names to the list

# Ensure the marker genes are present in your dataset
filtered_marker_genes <- lapply(marker_gene_lists, function(genes) {
  intersect(genes, rownames(neuron_seurat@assays$RNA))
})

all.sets <- lapply(names(filtered_marker_genes), function(x) {
    GeneSet(filtered_marker_genes[[x]], setName=x)        
})
all.sets <- GeneSetCollection(all.sets)

## ANNOTATION ## 
rankings <- AUCell_buildRankings(counts(sce_neuron),
    plotStats=FALSE, verbose=FALSE)
cell.aucs <- AUCell_calcAUC(all.sets, rankings)

results <- t(assay(cell.aucs))
head(results)
                        gene sets
cells                          chat1       chat2       chat3      GABA1      GABA2      GABA3      GABA4      GABA5      GABA6      GABA7       Glu1       Glu10      Glu11       Glu12      Glu13       Glu14
  12W_AAACCTGAGCAGGCTA-1 0.046612133 0.038415139 0.029487500 0.04377153 0.11815454 0.03728962 0.12660494 0.06881486 0.01406593 0.00000000 0.15244287 0.074937935 0.06039887 0.009690346 0.00000000 0.000000000
  12W_AAACCTGAGCTAACTC-1 0.062005228 0.048587372 0.020257633 0.29042611 0.14920527 0.08243076 0.16791934 0.09994539 0.11646851 0.01663299 0.13370831 0.073278837 0.01948937 0.002436754 0.13676761 0.099295127
  12W_AAACCTGAGTACCGGA-1 0.004416385 0.030619001 0.007794184 0.00000000 0.23036619 0.03701510 0.15429469 0.09457925 0.00000000 0.02167643 0.06671514 0.004589767 0.04796248 0.039562842 0.00000000 0.006101468
  12W_AAACCTGAGTGCAAGC-1 0.042523764 0.031964361 0.029905693 0.36485947 0.05740107 0.17414636 0.04991239 0.04470625 0.08761110 0.07945144 0.13823155 0.036354829 0.02101127 0.054839101 0.07076589 0.014320341
  12W_AAACCTGCATACCATG-1 0.006283034 0.008313436 0.007343063 0.14019946 0.13420152 0.03186552 0.10453549 0.02260886 0.05583497 0.00000000 0.12552798 0.088779897 0.03023351 0.008994131 0.07363553 0.075112139
  12W_AAACCTGCATCAGTAC-1 0.022081923 0.022073939 0.040162930 0.04774252 0.11787322 0.05577550 0.03646008 0.00000000 0.07839322 0.00000000 0.08261599 0.028664850 0.00000000 0.038057073 0.00000000 0.061042543
                        gene sets
cells                         Glu15       Glu2       Glu3        Glu4       Glu5       Glu6       Glu7       Glu8       Glu9
  12W_AAACCTGAGCAGGCTA-1 0.02847826 0.10206906 0.14658439 0.083449516 0.04499140 0.12797547 0.00000000 0.06668587 0.11318841
  12W_AAACCTGAGCTAACTC-1 0.03990338 0.02568144 0.18411615 0.027358510 0.04679278 0.08912289 0.05227811 0.25613437 0.12855072
  12W_AAACCTGAGTACCGGA-1 0.00000000 0.00000000 0.15581851 0.027004910 0.03664063 0.12032330 0.00000000 0.13904581 0.00000000
  12W_AAACCTGAGTGCAAGC-1 0.00000000 0.03841102 0.12323775 0.004920086 0.07128796 0.05306759 0.16065070 0.08584992 0.22574879
  12W_AAACCTGCATACCATG-1 0.06507246 0.02586329 0.21324138 0.031278414 0.08982803 0.14517604 0.05609449 0.30185252 0.09231884
  12W_AAACCTGCATCAGTAC-1 0.06512077 0.04816027 0.07645735 0.026146168 0.05688923 0.13881492 0.00000000 0.13233213 0.12173913
saveRDS(results, here("data/neuron_cell_anno_results.rds"))

#results <- readRDS(here("data/neuron_cell_anno_results.rds"))
new.labels <- colnames(results)[max.col(results)]

neuron_seurat$neuron_cell_type <- new.labels
table(neuron_seurat$neuron_cell_type, neuron_seurat$RNA_snn_res.0.8)
       
           0    1    2    3    4    5    6    7    8    9   10   11   12   13   14   15   16   17   18   19   20   21   22   23   24   25   26   27   28   29   30   31   32
  chat1    3    0    0    0    0    0    0    0    0    0 1601    0    0    0   58    0    0    0    4    0    0    0    2    0    0    4    2    0    0    0    0    0    0
  chat2    1    0    0    0    0    0    0    0    0  742    0    0    0    0    0    0    0    0   10    0    0    0    0    0    0    0    1    0    0    0    0    0    0
  chat3    0    0    0    0    0    0    0    0    0    0   89    0    0    0  542    0    0    0   16    0    0    0    0    0    0    1    0    0    0    0    0    0    0
  GABA1  562   15   13 1905 2898   37    5   11  145  868   29    9    3 1239   51    1   35    0   48   65    2  177   23  308  154    6   22  261    0   18    5   53    0
  GABA2  695  597   20  287  110 3697   57   63  184  211   14   13   22  134   81    3    9    1   40   60    1   55  142   40   23   14   24   13    4   27    1    0    1
  GABA3    4    0    0    9  274    0    0    0    0   63    0    0    0   31    0    0    0    0   15    1    0    0    0    5   28    0    0    1    0    0    0    1    0
  GABA4  504 3227    8  157   80  173    9    9  332   56    5    7    4  133   31    4    4    0   44   60    0   28  109   36    0   32   73    1    1   21    0    1    0
  GABA5  124 1806    0   19    2   13    1    2   11   44    0    4    6    8   10    0    2    0   18   48    0    5   98    6    0    8   13    3    0   11    0    1    0
  GABA6  193   38    4  163   62   20   18   13  814   23    4    8   10   67   12    1    3    0   46   14    0   19    9    1    0   22    8    2    1    5    1    0    2
  GABA7   60    1    0   23    3    1    0    1    1    3    1    2    1    1    4    0    4    0   18   24    0  235   27    0    0   16   11    0    0   18    0   24    0
  Glu1   304    2    9  132   62    4 3198   39   92   33   11   21   25   21   33   72   94    0   33   26    0    5   23   12   28   56   32    6    5   39    3   63    3
  Glu10  111    5    5   32    3    0  167   11    2   11   11    2   22    3   32  954    0    0   14   44    1    3    6    1    1   38   77    2    1   13    0   16    0
  Glu11   12    0    0    1    0    0    0   27    1    1    0    0    1    0    0    2    1    0    8    6    0    0    2    0    0    4    6    0  287    6    0    0    0
  Glu12    5    0    0    0    1    0    0    0    0    2    0    0    0    0    0    0    0    0    4   11    0    0    1   20    0    1    1   92    0    0    0    0    0
  Glu13  357   13   21  348  213    6   12   35   55  108   54   19   73   59  165    8   22    0   33  104    1   22   16    0   11    8   19   14    2   13  254    0    4
  Glu14   97    3    3   49    1    4    2    5  183    7    7    1    2    0   18    1    1    0   36   31    0    2   22    0    0   31   10    0    0   15    1   58    0
  Glu15   32    3    1   17    2    4    4    2   41    3    0    0    0    0    6    1    2    0   33   32    0    1    0    0    2    5    4    0    0    4    0    0    0
  Glu2    90    0    5   21    4    0    1 2178    5   13   21   10   10    1   23    1    1    0   15   18   10    2    2    4    1   29   13    2   84   50    0    2    0
  Glu3   636   28 2767  257   70   61   83  103  104   67  373   58   41   44  371   25   15    7  101   10  226   16   48   10   29   20   41    5    3   21    5    0   12
  Glu4    99    3    2   12    0    0    8   57    3    5   11  192 1706    1  127   53    6    0   25   12    3    2    9    2    0    8    5    1   35    3    1    0    0
  Glu5    20    0    1    8    0    0   22    2    1    0    2 1787    9    0    2    0    0    0    8    1    0    1    2    6    0    1    2    0    0    0    1    0    0
  Glu6   271    8 1218   90    9   20   58   11   22   21    8   21   54    2   51   11    4    0   69   60   14    3    3    1    2   18    6    9    0    4   11    2  148
  Glu7   189    3  281   80   18    7   22  151   14  108   20    3   35    3   64    6    9    0   41   20  453    8    5    1    4    6   13    5    6    9    2    1    0
  Glu8  1209   83  700  896  711  113  143  499  777   91   51  129  109  262  256   28   63  937  107   96   65   58   13   80  242   19   54   28    7   23   62    2   32
  Glu9   317    6   14  160   38   11  267   42   73   80    4   22   37   43   54    8  766    1   59   59    1   30   19    7    2  148   33   20    0   69    6   27    4
# Plot with predicted cell types
options(ggrepel.max.overlaps = Inf)
neuron_seurat <- SetIdent(neuron_seurat, value = "RNA_snn_res.0.8")
neuron_ann <- DimPlot(neuron_seurat, group.by = "neuron_cell_type", label = TRUE, repel = TRUE) + 
  ggtitle("Predicted Neuron Cell Type Annotations")
print(neuron_ann)
ggsave(here("img/neuron_anno_clusters.png"), neuron_ann)

# Get cell type identities
Idents(neuron_seurat) <- "neuron_cell_type"
overlap_results <- get_overlap_by_cluster(neuron_seurat, "Gfral", "Adcyap1")
print(overlap_results)

Look at the Pearson and Spearman coeffcients for co-expression Gfral/Adcyap1

# Extract expression values for two genes
gene1 <- "Gfral"  # Replace with your gene name
gene2 <- "Adcyap1"

all_data_layers <- grep("^data\\.", Layers(neuron_seurat[["RNA"]]), value = TRUE)
# Extract expression data from all layers and combine
expr_list <- lapply(all_data_layers, function(layer) {
  GetAssayData(neuron_seurat, assay = "RNA", layer = layer)
})

# Merge all extracted expression matrices (column-wise: cells are in columns)
expr_matrix_all <- do.call(cbind, expr_list)
expr_gene1 <- expr_matrix_all[gene1, ]
expr_gene2 <- expr_matrix_all[gene2, ]

Idents(neuron_seurat) <- "neuron_cell_type"

# Compute Pearson correlation
correlation <- cor(expr_gene1, expr_gene2, method = "pearson", use = "complete.obs")
print(correlation)
[1] 0.00100396
get_gene_correlation_by_cluster <- function(seurat_obj, gene1, gene2) {
  cluster_levels <- levels(seurat_obj)
  results <- data.frame(Cluster = character(), Pearson = numeric(), Spearman = numeric())
  
  for (cluster in cluster_levels) {
    cells_in_cluster <- WhichCells(seurat_obj, idents = cluster)
    
    expr_gene1 <- FetchData(seurat_obj, vars = gene1)[cells_in_cluster, , drop = FALSE]
    expr_gene2 <- FetchData(seurat_obj, vars = gene2)[cells_in_cluster, , drop = FALSE]
    
    if (length(cells_in_cluster) > 5) {  # Avoid errors with very small clusters
      pearson_corr <- cor(expr_gene1[, 1], expr_gene2[, 1], method = "pearson", use = "complete.obs")
      spearman_corr <- cor(expr_gene1[, 1], expr_gene2[, 1], method = "spearman", use = "complete.obs")
      
      results <- rbind(results, data.frame(Cluster = cluster, Pearson = pearson_corr, Spearman = spearman_corr))
    }
  }
  
  return(results)
}

# Run the function
correlation_results <- get_gene_correlation_by_cluster(neuron_seurat, "Gfral", "Adcyap1")
print(correlation_results)
NA
NA

Plot co-expression values for Gfral/Adcyap1 per cell type

# Extract Adcyap1 correlation values from the Gfral row
gfral_adcyap1_values <- sapply(results, function(x) {
  val <- x["Gfral", "Adcyap1"]
  if (is.null(val)) NA else as.numeric(val)  # Convert NULLs to NA and ensure numeric
})

# Convert to a 1-row numeric matrix
gfral_adcyap1_matrix <- matrix(gfral_adcyap1_values, nrow = 1)
rownames(gfral_adcyap1_matrix) <- "Gfral-Adcyap1"
colnames(gfral_adcyap1_matrix) <- names(results)

# Replace NA values with 0 or use na.color argument in pheatmap
gfral_adcyap1_matrix[is.na(gfral_adcyap1_matrix)] <- 0  

# Create heatmap
p <- pheatmap(
  gfral_adcyap1_matrix,
  cluster_rows = FALSE,  # No need to cluster one row
  cluster_cols = TRUE,   # Cluster cell types
  color = colorRampPalette(c("blue", "white", "red"))(100),
  main = "Gfral-Adcyap1 Co-expression Across Cell Types",
  na_col = "gray"  # Optionally mark NA values in gray instead of replacing with 0
)
print(p)
ggsave(here("img/heatmap_cluster_coexp.png"), p)

Session Info

Session Info
sessionInfo()
LS0tCnRpdGxlOiAiUDI0LTIwMyIKc3VidGl0bGU6ICJDb2RlIgpvdXRwdXQ6IGh0bWxfbm90ZWJvb2sKLS0tCgojIFNFVFVQCmBgYHtyIHdhcm5pbmc9RkFMU0UsIG1lc3NhZ2U9RkFMU0V9CmxpYnJhcnkoaGFybW9ueSkKbGlicmFyeShTZXVyYXQpCmxpYnJhcnkoU291cFgpCmxpYnJhcnkocGF0Y2h3b3JrKQpsaWJyYXJ5KHNjcmFuKQpsaWJyYXJ5KGNvd3Bsb3QpCmxpYnJhcnkocGF0Y2h3b3JrKQpsaWJyYXJ5KGdncGxvdDIpCmxpYnJhcnkocmVzaGFwZTIpCmxpYnJhcnkoUG9seWNocm9tZSkKbGlicmFyeShmb3JlYWNoKQpsaWJyYXJ5KGRvUGFyYWxsZWwpCmxpYnJhcnkoR1NFQUJhc2UpCmxpYnJhcnkoQVVDZWxsKQpsaWJyYXJ5KHNjcmFuKQpsaWJyYXJ5KHNjdXR0bGUpCmxpYnJhcnkoaGVyZSkKbGlicmFyeShyZWFkcikKbGlicmFyeShzY0xpbmspCmBgYAoKIyBGdW5jdGlvbnMKYGBge3J9CnBsb3RfaW50ZWdyYXRlZF9jbHVzdGVycyA9IGZ1bmN0aW9uIChzcmF0KSB7IAogICMjIHRha2UgYW4gaW50ZWdyYXRlZCBTZXVyYXQgb2JqZWN0LCBwbG90IGRpc3RyaWJ1dGlvbnMgb3ZlciBvcmlnLmlkZW50CgogIGNvdW50X3RhYmxlIDwtIHRhYmxlKHNyYXRAbWV0YS5kYXRhJHNldXJhdF9jbHVzdGVycywgc3JhdEBtZXRhLmRhdGEkb3JpZy5pZGVudCkKICBjb3VudF9tdHggICA8LSBhcy5kYXRhLmZyYW1lLm1hdHJpeChjb3VudF90YWJsZSkKICBjb3VudF9tdHgkY2x1c3RlciA8LSByb3duYW1lcyhjb3VudF9tdHgpCiAgbWVsdF9tdHggICAgPC0gbWVsdChjb3VudF9tdHgpCiAgbWVsdF9tdHgkY2x1c3RlciA8LSBhcy5mYWN0b3IobWVsdF9tdHgkY2x1c3RlcikKICAKICBjbHVzdGVyX3NpemUgICA8LSBhZ2dyZWdhdGUodmFsdWUgfiBjbHVzdGVyLCBkYXRhID0gbWVsdF9tdHgsIEZVTiA9IHN1bSkKICAKICBzb3J0ZWRfbGFiZWxzIDwtIHBhc3RlKHNvcnQoYXMuaW50ZWdlcihsZXZlbHMoY2x1c3Rlcl9zaXplJGNsdXN0ZXIpKSxkZWNyZWFzaW5nID0gVCkpCiAgY2x1c3Rlcl9zaXplJGNsdXN0ZXIgPC0gZmFjdG9yKGNsdXN0ZXJfc2l6ZSRjbHVzdGVyLGxldmVscyA9IHNvcnRlZF9sYWJlbHMpCiAgbWVsdF9tdHgkY2x1c3RlciA8LSBmYWN0b3IobWVsdF9tdHgkY2x1c3RlcixsZXZlbHMgPSBzb3J0ZWRfbGFiZWxzKQogIAogIGNvbG5hbWVzKG1lbHRfbXR4KVsyXSA8LSAiZGF0YXNldCIKICAKICBtZWx0X210eCRkYXRhc2V0IDwtIGZhY3RvcihtZWx0X210eCRkYXRhc2V0LCBsZXZlbHMgPSB1bmlxdWUobWVsdF9tdHgkZGF0YXNldCkpCgogIG15X2NvbG9ycyA8LSBjcmVhdGVQYWxldHRlKGxlbmd0aCh1bmlxdWUobWVsdF9tdHgkZGF0YXNldCkpLCAgYygiI2ZmMDAwMCIsICIjMDBmZjAwIiwgIiMwMDAwZmYiKSkKIyBBc3NpZ24gbmFtZXMgdG8gbXlfY29sb3JzIHRoYXQgbWF0Y2ggdGhlIGxldmVscyBvZiBtZWx0X210eCRkYXRhc2V0CiAgbmFtZXMobXlfY29sb3JzKSA8LSBsZXZlbHMobWVsdF9tdHgkZGF0YXNldCkKICAKICBwMSA8LSBnZ3Bsb3QoY2x1c3Rlcl9zaXplLCBhZXMoeT0gY2x1c3Rlcix4ID0gdmFsdWUpKSArIGdlb21fYmFyKHBvc2l0aW9uPSJkb2RnZSIsIHN0YXQ9ImlkZW50aXR5IixmaWxsID0gImdyZXk2MCIpICsgCiAgICB0aGVtZV9idygpICsgc2NhbGVfeF9sb2cxMCgpICsgeGxhYigiQ2VsbHMgcGVyIGNsdXN0ZXIsIGxvZzEwIHNjYWxlIikgKyB5bGFiKCIiKQogIHAyIDwtIGdncGxvdChtZWx0X210eCxhZXMoeD1jbHVzdGVyLHk9dmFsdWUsZmlsbD1kYXRhc2V0KSkgKyAKICAgIGdlb21fYmFyKHBvc2l0aW9uPSJmaWxsIiwgc3RhdD0iaWRlbnRpdHkiKSArIHRoZW1lX2J3KCkgKyBjb29yZF9mbGlwKCkgKyAKICAgIHNjYWxlX2ZpbGxfbWFudWFsKHZhbHVlcyA9IG15X2NvbG9ycykgKwogICAgeWxhYigiRnJhY3Rpb24gb2YgY2VsbHMgaW4gZWFjaCBkYXRhc2V0IikgKyB4bGFiKCJDbHVzdGVyIG51bWJlciIpICsgdGhlbWUobGVnZW5kLnBvc2l0aW9uPSJ0b3AiKQogIAogIHAyICsgcDEgKyBwbG90X2xheW91dCh3aWR0aHMgPSBjKDMsMSkpCn0KYGBgCgojIExvYWQgZGF0YQpgYGB7cn0KZGF0YV9kaXJlY3RvcnkgPC0gIn4vR2l0L1AyNC0yMDMvZGF0YS9jb3VudC8iCnNhbXBsZV9uYW1lcyA8LSBsaXN0LmZpbGVzKGRhdGFfZGlyZWN0b3J5KQpgYGAKCiMgQ3JlYXRlIFNldXJhdCBvYmplY3QKYGBge3Igd2FybmluZz1GQUxTRX0KCm5hbWVzID0gYygiMTgxMDE1XzIxViIsICIxODEwMTVfMjJTIiwgIjE4MTIxN19BUG4xXzZWIiwgIjE4MTIxN19BUG4xXzEyVyIsCiAgICAgICAgICAiMTgxMjE3X0FQbjFfMTlTIiwiMTgxMjI4X0FQLXJuYS1ncmFkaWVudF8xNFYiLCAKICAgICAgICAgICIxODEyMjhfQVAtcm5hLWdyYWRpZW50XzIwVyIsICIxODEyMjhfQVAtcm5hLWdyYWRpZW50XzI3VyIsCiAgICAgICAgICAiMTgxMjI4X0FQLXJuYS1ncmFkaWVudF8zMVMiLCAiMTgxMjI4X0FQLXJuYS1ncmFkaWVudF8zNlMiLAogICAgICAgICAgIjE4MTIyOF9BUC1ybmEtd2FzaF85ViIsICIxODEyMjhfQVAtcm5hLXdhc2hfMTZXIiwgIjE4MTIyOF9BUC1ybmEtd2FzaF8yNlMiLAogICAgICAgICAgIjE5MDIyMl83VyIsICIxOTAyMjJfMzdXIiwgIjE5MDIyMl8zNFciLCAiMTkwMjIyXzM5UyIsIAogICAgICAgICAgIjE5MDIyMl80MFMiLCAiMTkwMjIyXzIzViIsICIxOTAyMjJfMjVWIiwgIlNSUjE5NjYxNzYwIiwgIlNSUjE5NjYxNzYxIikgCgpzdWZmaXggPSBjKCIvb3V0cy9maWx0ZXJlZF9mZWF0dXJlX2JjX21hdHJpeCIpCgpzYW1wbGUgPC0gZ3N1YigiLipfIiwgIiIsIG5hbWVzKQpzYW1wbGUgPC0gc29ydChzYW1wbGUpCm1ldGFkYXRhID0gYygpIAoKZm9yIChpIGluIDE6bGVuZ3RoKG5hbWVzKSl7CgogIGRhdGFfcGF0aCA8LSBwYXN0ZShwYXN0ZShkYXRhX2RpcmVjdG9yeSwgc2FtcGxlW2ldLCBzZXAgPSAiIiksIHN1ZmZpeCwgc2VwID0gIiIpIAogIGRhdGFfcGF0aCA8LSBub3JtYWxpemVQYXRoKGRhdGFfcGF0aCkKICBkYXRhIDwtIFJlYWQxMFgoZGF0YV9wYXRoKQogIGNvbG5hbWVzKGRhdGEpIDwtIHBhc3RlKHNhbXBsZVtpXSwgY29sbmFtZXMoZGF0YSksIHNlcCA9ICJfIikKCiAgbWV0YWRhdGEgPSBjKG1ldGFkYXRhLCByZXAoc2FtcGxlW2ldLCBuY29sKGRhdGEpKSkKICAKICBpZiAoaSA9PSAxKSB7CiAgICBkdmMuZGF0YSA9IGRhdGEKICB9IAogIGVsc2UgewogICAgZHZjLmRhdGEgPSBjYmluZChkdmMuZGF0YSwgZGF0YSkKICB9Cn0KCm1ldGFkYXRhID0gZGF0YS5mcmFtZShtZXRhZGF0YSkKY29sbmFtZXMobWV0YWRhdGEpID0gInNhbXBsZSIKcm93bmFtZXMobWV0YWRhdGEpID0gY29sbmFtZXMoZHZjLmRhdGEpCgpkdmMgPC0gQ3JlYXRlU2V1cmF0T2JqZWN0KGNvdW50cyA9IGR2Yy5kYXRhLCBtZXRhLmRhdGEgPSBtZXRhZGF0YSkKcm93bmFtZXMoZHZjQGFzc2F5cyRSTkFAbGF5ZXJzJGNvdW50cykgPC0gcm93bmFtZXMoZHZjQGFzc2F5cyRSTkEpCgpgYGAKCiMgUUMKYGBge3Igd2FybmluZz1GQUxTRSwgbWVzc2FnZT1GQUxTRX0KCm1pdG8uZ2VuZXMgPC0gZ3JlcChwYXR0ZXJuID0gIl5tdC0iLCB4ID0gcm93bmFtZXMoZHZjQGFzc2F5cyRSTkEpLCB2YWx1ZSA9IFRSVUUpCnBlcmNlbnQubWl0byA8LSBNYXRyaXg6OmNvbFN1bXMoZHZjQGFzc2F5cyRSTkFAbGF5ZXJzJGNvdW50c1ttaXRvLmdlbmVzLF0pL01hdHJpeDo6Y29sU3VtcyhkdmNAYXNzYXlzJFJOQUBsYXllcnMkY291bnRzKQoKcmliby5nZW5lcyA8LSBncmVwKHBhdHRlcm4gPSAiXlJwIiwgeCA9IHJvd25hbWVzKGR2Y0Bhc3NheXMkUk5BKSwgdmFsdWUgPSBUUlVFKQpwZXJjZW50LnJpYm8gPC0gTWF0cml4Ojpjb2xTdW1zKGR2Y0Bhc3NheXMkUk5BQGxheWVycyRjb3VudHNbcmliby5nZW5lcyxdKS9NYXRyaXg6OmNvbFN1bXMoZHZjQGFzc2F5cyRSTkFAbGF5ZXJzJGNvdW50cykKCiMgU2F2ZSBkYXRhIHRvIHRoZSBTZXVyYXQgb2JqZWN0Cm1pdG8ucmlibyA9IGFzLmRhdGEuZnJhbWUoY2JpbmQocGVyY2VudC5taXRvLCBwZXJjZW50LnJpYm8pKQpjb2xuYW1lcyhtaXRvLnJpYm8pID0gYygicGVyY2VudC5taXRvIiwgInBlcmNlbnQucmlibyIpCgpkdmMgPC0gQWRkTWV0YURhdGEob2JqZWN0ID0gZHZjLCBtZXRhZGF0YSA9IG1pdG8ucmlibykKCiMgQ3JlYXRlIHRoZSB2aW9saW4gcGxvdCBhbmQgYWRqdXN0IG1hcmdpbnMKdmxuIDwtIFZsblBsb3QoZHZjLCBmZWF0dXJlcyA9IGMoIm5GZWF0dXJlX1JOQSIsICJuQ291bnRfUk5BIiksIG5jb2wgPSAyKSAKCnByaW50KHZsbikKCnZsbjIgPC0gVmxuUGxvdChkdmMsIGZlYXR1cmVzID0gYygicGVyY2VudC5taXRvIiwgInBlcmNlbnQucmlibyIpLCBuY29sID0gMikKcHJpbnQodmxuMikKCmR2YyA8LSBzdWJzZXQoZHZjLCBzdWJzZXQgPSBwZXJjZW50Lm1pdG8gPCAuMDUpCgpkdmMubGlzdCA8LSBTcGxpdE9iamVjdChvYmplY3QgPSBkdmMsIHNwbGl0LmJ5ID0gInNhbXBsZSIpCmBgYAoKIyBEYXRhIG5vcm1hbGl6YXRpb24gcGVyIHNhbXBsZQpgYGB7ciB3YXJuaW5nPUZBTFNFfQpjbHVzdGVyX2Fzc2lnbm1lbnRzX2xpc3QgPC0gbGlzdCgpCmZvcihpIGluIDE6bGVuZ3RoKGR2Yy5saXN0KSkgewogIGR2Yy5saXN0W1tpXV0gPC0gTm9ybWFsaXplRGF0YShvYmplY3QgPSBkdmMubGlzdFtbaV1dLCB2ZXJib3NlID0gRkFMU0UpCiAgZHZjLmxpc3RbW2ldXSA8LSBGaW5kVmFyaWFibGVGZWF0dXJlcyhvYmplY3QgPSBkdmMubGlzdFtbaV1dLCAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZWN0aW9uLm1ldGhvZCA9ICJ2c3QiLCBuZmVhdHVyZXMgPSAyMDAwLCAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmVyYm9zZSA9IEZBTFNFKQogIGR2Yy5saXN0W1tpXV0gPC0gU2NhbGVEYXRhKGR2Yy5saXN0W1tpXV0sIHZhcnMudG8ucmVncmVzcyA9ICJuQ291bnRfUk5BIiwgdmVyYm9zZSA9IEZBTFNFKQogIGR2Yy5saXN0W1tpXV0gPC0gUnVuUENBKGR2Yy5saXN0W1tpXV0sIG5wY3MgPSAzMCwgdmVyYm9zZSA9IEZBTFNFKQogIGR2Yy5saXN0W1tpXV0gPC0gUnVuVU1BUChkdmMubGlzdFtbaV1dLCByZWR1Y3Rpb24gPSAicGNhIiwgZGltcyA9IDE6MzAsIHZlcmJvc2UgPSBGQUxTRSkKCiAgZHZjLmxpc3RbW2ldXSA8LSBGaW5kTmVpZ2hib3JzKG9iamVjdCA9IGR2Yy5saXN0W1tpXV0sIGRpbXMgPSAxOjMwLCB2ZXJib3NlID0gRkFMU0UpCiAgZHZjLmxpc3RbW2ldXSA8LSBGaW5kQ2x1c3RlcnMob2JqZWN0ID0gZHZjLmxpc3RbW2ldXSwgcmVzb2x1dGlvbiA9IDAuNCwgdmVyYm9zZSA9IEZBTFNFKSAgIyBBZGp1c3QgcmVzb2x1dGlvbiBhcyBuZWVkZWQKCiAgIyBTdG9yZSBjbHVzdGVyIGFzc2lnbm1lbnRzCiAgY2x1c3Rlcl9hc3NpZ25tZW50c19saXN0W1tzYW1wbGVfbmFtZXNbaV1dXSA8LSBkdmMubGlzdFtbaV1dQG1ldGEuZGF0YSRzZXVyYXRfY2x1c3RlcnMKICBuYW1lcyhjbHVzdGVyX2Fzc2lnbm1lbnRzX2xpc3RbW3NhbXBsZV9uYW1lc1tpXV1dKSA8LSBjb2xuYW1lcyhkdmMubGlzdFtbaV1dKQp9ICAKCnNhdmVSRFMoZHZjLmxpc3QsIGZpbGUgPSAifi9HaXQvUDI0LTIwMy9kYXRhL2R2Y19saXN0LnJkcyIpCmBgYAoKCiMgQW1iaWVudCBSTkEgcmVtb3ZhbApgYGB7cn0KCiMgRGlyZWN0b3J5IGNvbnRhaW5pbmcgeW91ciBkYXRhCmNvdW50c19kaXJlY3RvcnkgPC0gIn4vR2l0L1AyNC0yMDMvZGF0YS9jb3VudCIKc3VmZml4IDwtICIvb3V0cy8iCgojIEdldCBhbGwgc2FtcGxlIGRpcmVjdG9yaWVzIGluICJkYXRhL2NvdW50IgpzYW1wbGVfZGlycyA8LSBsaXN0LmRpcnMoY291bnRzX2RpcmVjdG9yeSwgZnVsbC5uYW1lcyA9IFRSVUUsIHJlY3Vyc2l2ZSA9IEZBTFNFKQpzYW1wbGVfZGlycyA8LSBzb3J0KHNhbXBsZV9kaXJzKQpzYW1wbGVfbmFtZXMgPC0gZ3N1YigiLiovIiwgIiIsIHNhbXBsZV9kaXJzKSAgIyBFeHRyYWN0IHNhbXBsZSBuYW1lcyBmcm9tIHRoZSBmb2xkZXIgcGF0aHMKCiMgU2V0IHVwIHBhcmFsbGVsIGJhY2tlbmQgKGFkanVzdCBjb3JlcyBhcyBuZWVkZWQpCmNsIDwtIG1ha2VDbHVzdGVyKDQpCnJlZ2lzdGVyRG9QYXJhbGxlbChjbCkKCiMgUGFyYWxsZWwgbG9vcCB0byBwcm9jZXNzIGFsbCBzYW1wbGVzCnNjc19saXN0IDwtIGZvcmVhY2goaSA9IDE6bGVuZ3RoKHNhbXBsZV9uYW1lcyksIC5wYWNrYWdlcyA9IGMoIlNldXJhdCIsICJTb3VwWCIsICJnZ3Bsb3QyIikpICVkb3BhciUgewogIAogIHNhbXBsZV9uYW1lIDwtIHNhbXBsZV9uYW1lc1tpXSAgIyBDb3JyZWN0ZWQgdmFyaWFibGUgbmFtZQogIAogICMgQ29uc3RydWN0IHBhdGhzIHRvIHJhdyBhbmQgZmlsdGVyZWQgZmVhdHVyZSBtYXRyaWNlcwogIGZpbHRlcmVkX3BhdGggPC0gcGFzdGUwKHNhbXBsZV9kaXJzW2ldLCBzdWZmaXgsICJmaWx0ZXJlZF9mZWF0dXJlX2JjX21hdHJpeCIpCiAgcmF3X3BhdGggPC0gcGFzdGUwKHNhbXBsZV9kaXJzW2ldLCBzdWZmaXgsICJyYXdfZmVhdHVyZV9iY19tYXRyaXgiKQogIAogICMgTG9hZCByYXcgYW5kIGZpbHRlcmVkIGNvdW50cyB1c2luZyBTZXVyYXQncyBSZWFkMTBYCiAgdG9jIDwtIFNldXJhdDo6UmVhZDEwWChmaWx0ZXJlZF9wYXRoKQogIHRvZCA8LSBTZXVyYXQ6OlJlYWQxMFgocmF3X3BhdGgpCiAgCiAgIyBFbnN1cmUgbWF0cmljZXMgYXJlIHNwYXJzZQogIHRvZCA8LSBhcyh0b2QsICJkZ0NNYXRyaXgiKSAgCiAgdG9jIDwtIGFzKHRvYywgImRnQ01hdHJpeCIpICAKCiAgIyBDcmVhdGUgYSBTb3VwQ2hhbm5lbCBvYmplY3QKICBzYyA8LSBTb3VwQ2hhbm5lbCh0b2QsIHRvYykKICBzYyR0b2QgPC0gdG9kCiAgCiAgIyBFc3RpbWF0ZSB0aGUgc291cCBwcm9maWxlIChhbWJpZW50IFJOQSkKICBzYyA8LSBlc3RpbWF0ZVNvdXAoc2MpCiAgCiAgIyBTdWJzZXQgam9pbmVkX3NldXJhdCB0byBvbmx5IGluY2x1ZGUgY2VsbHMgaW4gc2MkdG9jCiAgc2NfY2VsbHMgPC0gY29sbmFtZXMoc2MkdG9jKSAKICBzY19jZWxsc19yZW5hbWVkIDwtIHBhc3RlMChzYW1wbGVfbmFtZSwgIl8iLCBzY19jZWxscykKICAKICBkdmMuc3Vic2V0IDwtIHN1YnNldChkdmMubGlzdFtbc2FtcGxlX25hbWVdXSwgY2VsbHMgPSBzY19jZWxsc19yZW5hbWVkKQoKICAjY2x1c3Rlcl9hc3NpZ25tZW50c19zdWJzZXQgPC0gY2x1c3Rlcl9hc3NpZ25tZW50c1tjb2xuYW1lcyhqb2luZWRfc2V1cmF0X3N1YnNldCldCiAgCiAgIyBFeHRyYWN0IGNsdXN0ZXIgYXNzaWdubWVudHMKICBjbHVzdGVyX2Fzc2lnbm1lbnRzX3N1YnNldCA8LSBjbHVzdGVyX2Fzc2lnbm1lbnRzX2xpc3RbW3NhbXBsZV9uYW1lXV1bY29sbmFtZXMoZHZjLnN1YnNldCldCiAgbmFtZXMoY2x1c3Rlcl9hc3NpZ25tZW50c19zdWJzZXQpIDwtIGdzdWIoIl4uKl8iLCAiIiwgbmFtZXMoY2x1c3Rlcl9hc3NpZ25tZW50c19zdWJzZXQpKQoKICAjIEhhbmRsZSBtaXNzaW5nIGNlbGxzCiAgbWlzc2luZ19jZWxscyA8LSBzZXRkaWZmKGNvbG5hbWVzKHNjJHRvYyksIG5hbWVzKGNsdXN0ZXJfYXNzaWdubWVudHNfc3Vic2V0KSkKICBjbHVzdGVyX2Fzc2lnbm1lbnRzX3N1YnNldFttaXNzaW5nX2NlbGxzXSA8LSAwCgogICMgQWRkIGNsdXN0ZXIgYXNzaWdubWVudHMgdG8gU291cFggb2JqZWN0CiAgc2MgPC0gc2V0Q2x1c3RlcnMoc2MsIGNsdXN0ZXJfYXNzaWdubWVudHNfc3Vic2V0KQoKICAjIFNldCBkaW1lbnNpb25hbGl0eSByZWR1Y3Rpb24gZm9yIFNvdXBDaGFubmVsCiAgZHZjLnN1YnNldEBtZXRhLmRhdGEkUkQxIDwtIGR2Yy5zdWJzZXRAcmVkdWN0aW9ucyR1bWFwQGNlbGwuZW1iZWRkaW5nc1ssMV0KICBkdmMuc3Vic2V0QG1ldGEuZGF0YSRSRDIgPC0gZHZjLnN1YnNldEByZWR1Y3Rpb25zJHVtYXBAY2VsbC5lbWJlZGRpbmdzWywyXQogIAogIHNjIDwtIHNldERSKHNjLCBkdmMuc3Vic2V0QG1ldGEuZGF0YVtzY19jZWxsc19yZW5hbWVkLCBjKCJSRDEiLCAiUkQyIildKQoKICAjIEF1dG9tYXRpY2FsbHkgZXN0aW1hdGUgY29udGFtaW5hdGlvbgogIHNjIDwtIGF1dG9Fc3RDb250KHNjKQoKICAjIEFkanVzdCBjb3VudHMKICBhZGp1c3RlZF9jb3VudHMgPC0gYWRqdXN0Q291bnRzKHNjKQoKICAjIC0tLS0tIFBMT1RUSU5HIC0tLS0tCiAgZGQgPC0gbmEub21pdChkdmMuc3Vic2V0QG1ldGEuZGF0YVtzY19jZWxsc19yZW5hbWVkLCBdKQogIAogICMgUGxvdCBTZXVyYXQgQ2x1c3RlciBBbm5vdGF0aW9ucwogIG1pZHMgPSBhZ2dyZWdhdGUoY2JpbmQoUkQxLCBSRDIpIH4gc2V1cmF0X2NsdXN0ZXJzLCBkYXRhID0gZGQsIEZVTiA9IG1lYW4pCiAgZ2cgPSBnZ3Bsb3QoZGQsIGFlcyhSRDEsIFJEMikpICsKICAgICAgZ2VvbV9wb2ludChhZXMoY29sb3VyID0gc2V1cmF0X2NsdXN0ZXJzKSwgc2l6ZSA9IDAuMikgKwogICAgICBnZW9tX2xhYmVsKGRhdGEgPSBtaWRzLCBhZXMobGFiZWwgPSBzZXVyYXRfY2x1c3RlcnMpKSArCiAgICAgIGdndGl0bGUocGFzdGUwKHNhbXBsZV9uYW1lLCAiIC0gU2V1cmF0IENsdXN0ZXIgQW5ub3RhdGlvbiIpKSArCiAgICAgIGd1aWRlcyhjb2xvdXIgPSBndWlkZV9sZWdlbmQob3ZlcnJpZGUuYWVzID0gbGlzdChzaXplID0gMSkpKQogIGdnc2F2ZShwYXN0ZTAoc2FtcGxlX25hbWUsICJfU2V1cmF0X0NsdXN0ZXJfQW5ub3RhdGlvbi5wbmciKSwgZ2cpCgogICMgUGxvdCBHZnJhbCBleHByZXNzaW9uCiAgZGQkZ2ZyYWwgPC0gc2MkdG9jWyJHZnJhbCIsIGdzdWIoIl4uKl8iLCAiIiwgcm93bmFtZXMoZGQpKV0KICBnZzEgPC0gZ2dwbG90KGRkLCBhZXMoUkQxLCBSRDIpKSArIGdlb21fcG9pbnQoYWVzKGNvbG91ciA9IGdmcmFsID4gMCkpCiAgZ2dzYXZlKHBhc3RlMChzYW1wbGVfbmFtZSwgIl9HZnJhbF9FeHByZXNzaW9uLnBuZyIpLCBnZzEpCgogIGdnMV8yIDwtIHBsb3RNYXJrZXJNYXAoc2MsICJHZnJhbCIpCiAgZ2dzYXZlKHBhc3RlMChzYW1wbGVfbmFtZSwgIl9HZnJhbF9NYXJrZXJNYXAucG5nIiksIGdnMV8yKQoKICAjIFBsb3QgQWRjeXNyYXQxIGV4cHJlc3Npb24KICBkZCRhZGN5YXAxIDwtIHNjJHRvY1siQWRjeWFwMSIsIGdzdWIoIl4uKl8iLCAiIiwgcm93bmFtZXMoZGQpKV0KICBnZzIgPC0gZ2dwbG90KGRkLCBhZXMoUkQxLCBSRDIpKSArIGdlb21fcG9pbnQoYWVzKGNvbG91ciA9IGFkY3lhcDEgPiAwKSkKICBnZ3NhdmUocGFzdGUwKHNhbXBsZV9uYW1lLCAiX0FkY3lhcDFfRXhwcmVzc2lvbi5wbmciKSwgZ2cyKQoKICBnZzJfMiA8LSBwbG90TWFya2VyTWFwKHNjLCAiQWRjeWFwMSIpCiAgZ2dzYXZlKHBhc3RlMChzYW1wbGVfbmFtZSwgIl9BZGN5YXAxX01hcmtlck1hcC5wbmciKSwgZ2cyXzIpCgogICMgUGxvdCBDaGFuZ2UgTWFwcwogIGdnMV8zIDwtIHBsb3RDaGFuZ2VNYXAoc2MsIGFkanVzdGVkX2NvdW50cywgIkdmcmFsIikKICBnZzJfMyA8LSBwbG90Q2hhbmdlTWFwKHNjLCBhZGp1c3RlZF9jb3VudHMsICJBZGN5YXAxIikKICBnZ3NhdmUocGFzdGUwKHNhbXBsZV9uYW1lLCAiX0dmcmFsX0NoYW5nZU1hcC5wbmciKSwgZ2cxXzMpCiAgZ2dzYXZlKHBhc3RlMChzYW1wbGVfbmFtZSwgIl9BZGN5YXAxX0NoYW5nZU1hcC5wbmciKSwgZ2cyXzMpCgogICMgUmV0dXJuIHRoZSBwcm9jZXNzZWQgU291cENoYW5uZWwKICBsaXN0KHNhbXBsZV9uYW1lID0gc2FtcGxlX25hbWUsIHNjID0gc2MpCn0KCiMgU3RvcCB0aGUgY2x1c3RlciBhZnRlciBwcm9jZXNzaW5nCnN0b3BDbHVzdGVyKGNsKQoKIyBDb252ZXJ0IHJlc3VsdHMgaW50byBhIG5hbWVkIGxpc3QKc2NzIDwtIHNldE5hbWVzKGxhcHBseShzY3NfbGlzdCwgZnVuY3Rpb24oeCkgeCRzYyksIHNhcHBseShzY3NfbGlzdCwgZnVuY3Rpb24oeCkgeCRzYW1wbGVfbmFtZSkpCiNzYXZlUkRTKHNjcywgInNvdXBfY2hhbm5lbHNfdG1wLnJkcyIpCgpgYGAKCiMgQ3JlYXRlIFNldXJhdCBvYmplY3RzIGZvciBlYWNoIFNvdXAgY2hhbm5lbApgYGB7ciB3YXJuaW5nPUZBTFNFLCBtZXNzYWdlPUZBTFNFfQoKIyBDcmVhdGUgYW4gZW1wdHkgbGlzdCB0byBzdG9yZSBTZXVyYXQgb2JqZWN0cwpzcmF0X2xpc3QgPC0gbGlzdCgpCgojIEl0ZXJhdGUgdGhyb3VnaCBlYWNoIFNvdXBYIGNoYW5uZWwKZm9yIChub20gaW4gbmFtZXMoc2NzKSkgewogICAgIyBDbGVhbiBjaGFubmVsIG5hbWVkICdub20nCiAgICB0bXAgPC0gYWRqdXN0Q291bnRzKHNjc1tbbm9tXV0pCiAgICAKICAgICMgQWRkIGV4cGVyaW1lbnQgbmFtZSB0byBjZWxsIGJhcmNvZGVzIHRvIG1ha2UgdGhlbSB1bmlxdWUgKG9wdGlvbmFsKQogICAgY29sbmFtZXModG1wKSA8LSBwYXN0ZTAobm9tLCAiXyIsIGNvbG5hbWVzKHRtcCkpCgogICAgIyBDcmVhdGUgYSBTZXVyYXQgb2JqZWN0IGZvciB0aGUgY3VycmVudCBzYW1wbGUKICAgIHNyYXRfbGlzdFtbbm9tXV0gPC0gQ3JlYXRlU2V1cmF0T2JqZWN0KGNvdW50cyA9IHRtcCwgcHJvamVjdCA9IG5vbSkKfQpgYGAKCiMgTm9ybWFsaXphdGlvbiBhZnRlciBhbWJpZW50IFJOQSByZW1vdmFsCmBgYHtyIG1lc3NhZ2U9RkFMU0UsIHdhcm5pbmc9RkFMU0V9CnNyYXRfbGlzdCA8LSBsYXBwbHkoc3JhdF9saXN0LCBmdW5jdGlvbihzZXVyYXRfb2JqKSB7CiAgICBzZXVyYXRfb2JqIDwtIE5vcm1hbGl6ZURhdGEoc2V1cmF0X29iaikKICAgIHNldXJhdF9vYmogPC0gRmluZFZhcmlhYmxlRmVhdHVyZXMoc2V1cmF0X29iaiwgc2VsZWN0aW9uLm1ldGhvZCA9ICJ2c3QiLCBuZmVhdHVyZXMgPSAyMDAwLCB2ZXJib3NlID0gRkFMU0UpCiAgICBzZXVyYXRfb2JqIDwtIFNjYWxlRGF0YShzZXVyYXRfb2JqLCB2YXJzLnRvLnJlZ3Jlc3MgPSAibkNvdW50X1JOQSIsIHZlcmJvc2UgPSBGQUxTRSkKICAgIHNldXJhdF9vYmogPC0gUnVuUENBKHNldXJhdF9vYmosIG5wY3MgPSAzMCwgdmVyYm9zZSA9IEZBTFNFKQogICAgc2V1cmF0X29iaiA8LSBSdW5VTUFQKHNldXJhdF9vYmosIHJlZHVjdGlvbiA9ICJwY2EiLCBkaW1zID0gMTozMCwgdmVyYm9zZSA9IEZBTFNFKQogICAgc2V1cmF0X29iaiA8LSBGaW5kTmVpZ2hib3JzKHNldXJhdF9vYmosIGRpbXMgPSAxOjMwLCB2ZXJib3NlID0gRkFMU0UpCiAgICBzZXVyYXRfb2JqIDwtIEZpbmRDbHVzdGVycyhzZXVyYXRfb2JqLCByZXNvbHV0aW9uID0gMC40LCB2ZXJib3NlID0gRkFMU0UpCiAgICByZXR1cm4oc2V1cmF0X29iaikKfSkKc2F2ZVJEUyhzcmF0X2xpc3QsICJhZnRlcl9zb3VweF90bXAucmRzIikKYGBgCgoKIyBEb3VibGV0IHJlbW92YWwKYGBge3J9CmNsIDwtIG1ha2VDbHVzdGVyKDgpCnJlZ2lzdGVyRG9QYXJhbGxlbChjbCkKCmNsdXN0ZXJFdmFsUShjbCwgewogIGxpYnJhcnkoU2V1cmF0KQogIGxpYnJhcnkoRG91YmxldEZpbmRlcikKfSkKCnNyYXQubGlzdC53b2RvdWJsZXRzIDwtIGZvcmVhY2goaSA9IDE6bGVuZ3RoKHNyYXRfbGlzdCksIC5wYWNrYWdlcyA9IGMoIlNldXJhdCIsICJEb3VibGV0RmluZGVyIikpICVkbyUgewogIHRyeUNhdGNoKHsKICAgIHNldC5zZWVkKGkpCiAgICAKICAgIHByaW50KHBhc3RlKCJQcm9jZXNzaW5nIHNhbXBsZToiLCBpKSkgIAoKICAgICMgQ2hlY2sgaWYgc3JhdF9saXN0W1tpXV0gaXMgdmFsaWQKICAgIGlmIChpcy5udWxsKHNyYXRfbGlzdFtbaV1dKSkgewogICAgICBtZXNzYWdlKHBhc3RlKCJTa2lwcGluZyBzYW1wbGUiLCBpLCAiYmVjYXVzZSBpdCBpcyBOVUxMIikpCiAgICAgIHJldHVybihOVUxMKQogICAgfQoKICAgICMgRGVidWdnaW5nOiBDaGVjayBpZiBkYXRhIGV4aXN0cwogICAgcHJpbnQoZGltKHNyYXRfbGlzdFtbaV1dQGFzc2F5cyRSTkEpKSAgCgogICAgIyBwSyBpZGVudGlmaWNhdGlvbgogICAgc3dlZXAucmVzLmxpc3Rfc3JhdCA8LSBwYXJhbVN3ZWVwKHNyYXRfbGlzdFtbaV1dLCBQQ3MgPSAxOjEwLCBzY3QgPSBGQUxTRSkKICAgIHN3ZWVwLnN0YXRzX3NyYXQgPC0gc3VtbWFyaXplU3dlZXAoc3dlZXAucmVzLmxpc3Rfc3JhdCwgR1QgPSBGQUxTRSkKICAgIGJjbXZuX3NyYXQgPC0gZmluZC5wSyhzd2VlcC5zdGF0c19zcmF0KQogICAgcEsgPC0gYmNtdm5fc3JhdCRwS1t3aGljaC5tYXgoYmNtdm5fc3JhdCRCQ21ldHJpYyldCiAgICBwSyA8LSBhcy5udW1lcmljKGFzLmNoYXJhY3RlcihwSykpCgogICAgcHJpbnQocGFzdGUoIlNlbGVjdGVkIHBLOiIsIHBLKSkgIAoKICAgICMgRG91YmxldCByZW1vdmFsIAogICAgbkV4cF9wb2kgPC0gcm91bmQoMC4wMzUgKiBuY29sKHNyYXRfbGlzdFtbaV1dQGFzc2F5cyRSTkEpKQogICAgc3JhdF9saXN0W1tpXV0gPC0gZG91YmxldEZpbmRlcihzcmF0X2xpc3RbW2ldXSwgUENzID0gMToxMCwgcE4gPSAwLjIsIHBLID0gcEssIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbkV4cCA9IG5FeHBfcG9pLCByZXVzZS5wQU5OID0gRkFMU0UsIHNjdCA9IEZBTFNFKQoKICAgIGNvbG5hbWVzKHNyYXRfbGlzdFtbaV1dQG1ldGEuZGF0YSlbNjo3XSA8LSBjKCJwQU5OIiwgImNsYXNzaWZpY2F0aW9ucyIpCgogICAgcHJpbnQodGFibGUoc3JhdF9saXN0W1tpXV1AbWV0YS5kYXRhJGNsYXNzaWZpY2F0aW9ucykpCgogICAgc3JhdC53b2RvdWJsZXRzIDwtIHN1YnNldChzcmF0X2xpc3RbW2ldXSwgc3Vic2V0ID0gY2xhc3NpZmljYXRpb25zID09ICJTaW5nbGV0IikKCiAgICByZXR1cm4oc3JhdC53b2RvdWJsZXRzKSAgCiAgfSwgZXJyb3IgPSBmdW5jdGlvbihlKSB7CiAgICBtZXNzYWdlKHBhc3RlKCJFcnJvciBpbiBzYW1wbGUiLCBpLCAiOiIsIGUkbWVzc2FnZSkpCiAgICByZXR1cm4oTlVMTCkKICB9KQp9CgojIEFzc2lnbiBuYW1lcwpuYW1lcyhzcmF0Lmxpc3Qud29kb3VibGV0cykgPC0gbmFtZXMoc3JhdF9saXN0KVshc2FwcGx5KHNyYXQubGlzdC53b2RvdWJsZXRzLCBpcy5udWxsKV0KCiNzYXZlUkRTKHNyYXQubGlzdC53b2RvdWJsZXRzLCBmaWxlID0gIn4vR2l0L1AyNC0yMDMvZGF0YS9zcmF0X2xpc3Rfd29fZG91YmxldHMucmRzIikKCnN0b3BDbHVzdGVyKGNsKQoKCmBgYAoKIyBDb21iaW5lIGNsZWFuIHNldXJhdCBvYmplY3RzCmBgYHtyIG1lc3NhZ2U9RkFMU0UsIHdhcm5pbmc9RkFMU0V9CiNzcmF0Lmxpc3Qud29kb3VibGV0cyA8LSByZWFkUkRTKCJ+L0dpdC9QMjQtMjAzL2RhdGEvc3JhdF9saXN0X3dvX2RvdWJsZXRzLnJkcyIpCgpqb2luZWRfc2V1cmF0IDwtIG1lcmdlKHNyYXQubGlzdC53b2RvdWJsZXRzW1sxXV0sIHkgPSBzcmF0Lmxpc3Qud29kb3VibGV0c1stMV0sIG1lcmdlLmRhdGEgPSBUUlVFKQpgYGAKCiMgTm9ybWFsaXplIGpvaW5lZCBkYXRhIHNldApgYGB7ciB3YXJuaW5nPUZBTFNFfQpqb2luZWRfc2V1cmF0IDwtIE5vcm1hbGl6ZURhdGEob2JqZWN0ID0gam9pbmVkX3NldXJhdCwgdmVyYm9zZSA9IEZBTFNFKQpqb2luZWRfc2V1cmF0IDwtIEZpbmRWYXJpYWJsZUZlYXR1cmVzKG9iamVjdCA9IGpvaW5lZF9zZXVyYXQsIHNlbGVjdGlvbi5tZXRob2QgPSAidnN0IiwgbmZlYXR1cmVzID0gMjAwMCwgdmVyYm9zZSA9IEZBTFNFKQpqb2luZWRfc2V1cmF0IDwtIFNjYWxlRGF0YShqb2luZWRfc2V1cmF0LCB2YXJzLnRvLnJlZ3Jlc3MgPSAibkNvdW50X1JOQSIsIHZlcmJvc2UgPSBGQUxTRSkKam9pbmVkX3NldXJhdCA8LSBSdW5QQ0Eoam9pbmVkX3NldXJhdCwgbnBjcyA9IDMwLCB2ZXJib3NlID0gRkFMU0UpCmpvaW5lZF9zZXVyYXQgPC0gUnVuVU1BUChqb2luZWRfc2V1cmF0LCByZWR1Y3Rpb24gPSAicGNhIiwgZGltcyA9IDE6MzAsIHZlcmJvc2UgPSBGKQoKam9pbmVkX3NldXJhdCA8LSBGaW5kTmVpZ2hib3JzKG9iamVjdCA9IGpvaW5lZF9zZXVyYXQsIGRpbXMgPSAxOjMwLCB2ZXJib3NlID0gRkFMU0UpCmpvaW5lZF9zZXVyYXQgPC0gRmluZENsdXN0ZXJzKG9iamVjdCA9IGpvaW5lZF9zZXVyYXQsIHJlc29sdXRpb24gPSAwLjgsIHZlcmJvc2UgPSBGQUxTRSkgICMgQWRqdXN0IHJlc29sdXRpb24gYXMgbmVlZGVkCkRpbVBsb3Qoam9pbmVkX3NldXJhdCwgcmVkdWN0aW9uID0gInVtYXAiLCBncm91cC5ieSA9ICJzZXVyYXRfY2x1c3RlcnMiKQoKY2x1c3Rlcl9hc3NpZ25tZW50cyA8LSBqb2luZWRfc2V1cmF0QG1ldGEuZGF0YSRzZXVyYXRfY2x1c3RlcnMKCm5hbWVzKGNsdXN0ZXJfYXNzaWdubWVudHMpIDwtIGNvbG5hbWVzKGpvaW5lZF9zZXVyYXQpCgpzYXZlUkRTKGpvaW5lZF9zZXVyYXQsICJ+L0dpdC9QMjQtMjAzL2RhdGEvam9pbmVkX3NldXJhdC5yZHMiKQoKYGBgCgojIFBsb3QgYmVmb3JlIGludGVncmF0aW9uCmBgYHtyIG1lc3NhZ2U9RkFMU0UsIHdhcm5pbmc9RkFMU0V9CiMgQWRkIGEgbmV3IGNvbHVtbiB0byBpbmRpY2F0ZSB0aGUgc3R1ZHkKam9pbmVkX3NldXJhdCRzdHVkeSA8LSBpZmVsc2UoZ3JlcGwoIlNSUiIsIGNvbG5hbWVzKGpvaW5lZF9zZXVyYXQpKSwgIkdTRTIwNjE0NCIsICJHU0UxNjY2NDkiKQoKYmVmb3JlX2ludCA8LSBEaW1QbG90KGpvaW5lZF9zZXVyYXQscmVkdWN0aW9uID0gInVtYXAiLCBncm91cC5ieSA9ICJzdHVkeSIpICsgcGxvdF9hbm5vdGF0aW9uKHRpdGxlID0gIkJvdGggZGF0YSBzZXRzLCBiZWZvcmUgaW50ZWdyYXRpb24iKQpwcmludChiZWZvcmVfaW50KQpnZ3NhdmUoaGVyZSgiaW1nL2JlZm9yZV9pbnRlZ3JhdGlvbi5wbmciKSxiZWZvcmVfaW50KQpgYGAKCiMgSW50ZWdyYXRpb24KYGBge3IgbWVzc2FnZT1GQUxTRSwgd2FybmluZz1GQUxTRX0Kam9pbmVkX3NldXJhdCA8LSBqb2luZWRfc2V1cmF0ICU+JSBSdW5IYXJtb255KCJvcmlnLmlkZW50IiwgcGxvdF9jb252ZXJnZW5jZSA9IFQpCmBgYAoKIyBDaGVjayBlbWJlZGRpbmdzCmBgYHtyfQpoYXJtb255X2VtYmVkZGluZ3MgPC0gRW1iZWRkaW5ncyhqb2luZWRfc2V1cmF0LCAnaGFybW9ueScpCmhhcm1vbnlfZW1iZWRkaW5nc1sxOjUsIDE6NV0KYGBgCgojIENoZWNrIFBDQSBwbG90IGFmdGVyIGludGVncmF0aW9uCmBgYHtyfQoKcDEgPC0gRGltUGxvdChvYmplY3QgPSBqb2luZWRfc2V1cmF0LCByZWR1Y3Rpb24gPSAiaGFybW9ueSIsIHB0LnNpemUgPSAuMSwgZ3JvdXAuYnkgPSAib3JpZy5pZGVudCIpICsgTm9MZWdlbmQoKQpwMiA8LSBWbG5QbG90KG9iamVjdCA9IGpvaW5lZF9zZXVyYXQsIGZlYXR1cmVzID0gImhhcm1vbnlfMSIsIGdyb3VwLmJ5ID0gIm9yaWcuaWRlbnQiLCBwdC5zaXplID0gLjEpICsgTm9MZWdlbmQoKQpwbG90X2dyaWQocDEscDIpCgpgYGAKCiMgVU1BUCBhbmQgY2x1c3RlcmluZwpgYGB7ciBtZXNzYWdlPUZBTFNFLCB3YXJuaW5nPUZBTFNFfQpqb2luZWRfc2V1cmF0IDwtIGpvaW5lZF9zZXVyYXQgJT4lIAogIFJ1blVNQVAocmVkdWN0aW9uID0gImhhcm1vbnkiLCBkaW1zID0gMTozMCwgdmVyYm9zZSA9IEZBTFNFKSAlPiUgCiAgRmluZE5laWdoYm9ycyhyZWR1Y3Rpb24gPSAiaGFybW9ueSIsIGsucGFyYW0gPSAxMCwgZGltcyA9IDE6MzApICU+JSAKICBGaW5kQ2x1c3RlcnMoKSAlPiUgCiAgaWRlbnRpdHkoKQpgYGAKCiMgUGxvdCBwZXIgc2FtcGxlIGFmdGVyIGludGVncmF0aW9uIAoKYGBge3J9CkRpbVBsb3Qoam9pbmVkX3NldXJhdCwgcmVkdWN0aW9uID0gInVtYXAiLCBncm91cC5ieSA9ICJvcmlnLmlkZW50IiwgcHQuc2l6ZSA9IC4xLCBzcGxpdC5ieSA9ICdvcmlnLmlkZW50JykgKyBOb0xlZ2VuZCgpCmBgYAoKIyBQbG90IGRhdGEgc2V0cyBhZnRlciBpbnRlZ3JhdGlvbgpgYGB7cn0KYWZ0ZXJfaW50IDwtIERpbVBsb3Qoam9pbmVkX3NldXJhdCxyZWR1Y3Rpb24gPSAidW1hcCIsIGdyb3VwLmJ5ID0gInN0dWR5IikgKyBwbG90X2Fubm90YXRpb24odGl0bGUgPSAiQm90aCBkYXRhIHNldHMsIGFmdGVyIGludGVncmF0aW9uIikKcHJpbnQoYWZ0ZXJfaW50KQpnZ3NhdmUoaGVyZSgiaW1nL2FmdGVyX2ludGVncmF0aW9uLnBuZyIpLGFmdGVyX2ludCkKYGBgCgojIFBsb3QgdGhlIFNldXJhdCBjbHVzdGVycwpgYGB7cn0Kam9pbmVkX3NldXJhdCA8LSBTZXRJZGVudChqb2luZWRfc2V1cmF0LCB2YWx1ZSA9ICJzZXVyYXRfY2x1c3RlcnMiKQpkIDwtIERpbVBsb3Qoam9pbmVkX3NldXJhdCxsYWJlbCA9IFRSVUUpICsgTm9MZWdlbmQoKQpwcmludChkKQpnZ3NhdmUoaGVyZSgiaW1nL3NldXJhdF9jbHVzdGVyc19hbGxfY2VsbHMucG5nIiksIGQpCgpgYGAKCiMgQ2x1c3RlciBjb250ZW50CmBgYHtyIG1lc3NhZ2U9RkFMU0UsIHdhcm5pbmc9RkFMU0V9CnAgPC0gcGxvdF9pbnRlZ3JhdGVkX2NsdXN0ZXJzKGpvaW5lZF9zZXVyYXQpCnByaW50KHApCmdnc2F2ZShoZXJlKCJpbWcvY2x1c19jb21wX2FsbC5wbmciKSxwKQpgYGAKCgojIEFubm90YXRpb24gTlRTIHZzIEFQCgpgYGB7ciBtZXNzYWdlPUZBTFNFLCB3YXJuaW5nPUZBTFNFfQoKYXBfbWFya2VycyA8LSByZWFkLmNzdigifi9HaXQvUDI0LTIwMy9kb2MvbWFya2VyX2dlbmVzX0FQLmNzdiIsIGhlYWRlciA9IFRSVUUsIHN0cmluZ3NBc0ZhY3RvcnMgPSBGQUxTRSkKbnRzX21hcmtlcnMgPC0gcmVhZC5jc3YoIn4vR2l0L1AyNC0yMDMvZG9jL21hcmtlcl9nZW5lc19OVFMuY3N2IiwgaGVhZGVyID0gVFJVRSwgc3RyaW5nc0FzRmFjdG9ycyA9IEZBTFNFKQoKIyBFbnN1cmUgdGhlIG1hcmtlciBnZW5lcyBhcmUgcHJlc2VudCBpbiB5b3VyIGRhdGFzZXQKYXBfbWFya2VycyA8LSBpbnRlcnNlY3QodW5saXN0KGFwX21hcmtlcnMkZ2VuZSksIHJvd25hbWVzKGpvaW5lZF9zZXVyYXRAYXNzYXlzJFJOQSkpCm50c19tYXJrZXJzIDwtIGludGVyc2VjdCh1bmxpc3QobnRzX21hcmtlcnMkZ2VuZSksIHJvd25hbWVzKGpvaW5lZF9zZXVyYXRAYXNzYXlzJFJOQSkpCgpjbHVzdGVyX2F2Z19leHByZXNzaW9uIDwtIEFnZ3JlZ2F0ZUV4cHJlc3Npb24oam9pbmVkX3NldXJhdCwgZmVhdHVyZXMgPSBjKGFwX21hcmtlcnMsIG50c19tYXJrZXJzKSwgZ3JvdXAuYnkgPSAic2V1cmF0X2NsdXN0ZXJzIikkUk5BCgphcF9leHByZXNzaW9uIDwtIGNsdXN0ZXJfYXZnX2V4cHJlc3Npb25bYXBfbWFya2VycywgXQpudHNfZXhwcmVzc2lvbiA8LSBjbHVzdGVyX2F2Z19leHByZXNzaW9uW250c19tYXJrZXJzLCBdCgphcF9jbHVzdGVyX3Njb3JlcyA8LSBjb2xNZWFucyhhcF9leHByZXNzaW9uLCBuYS5ybSA9IFRSVUUpCm50c19jbHVzdGVyX3Njb3JlcyA8LSBjb2xNZWFucyhudHNfZXhwcmVzc2lvbiwgbmEucm0gPSBUUlVFKQoKY2x1c3Rlcl9hbm5vdGF0aW9ucyA8LSBpZmVsc2UoYXBfY2x1c3Rlcl9zY29yZXMgPiBudHNfY2x1c3Rlcl9zY29yZXMsICJBUCIsICJOVFMiKQpuYW1lcyhjbHVzdGVyX2Fubm90YXRpb25zKSA8LSAwOjMzCm1hcHBlZF9hbm5vdGF0aW9ucyA8LSBjbHVzdGVyX2Fubm90YXRpb25zW2FzLmNoYXJhY3Rlcihqb2luZWRfc2V1cmF0JHNldXJhdF9jbHVzdGVycyldCm5hbWVzKG1hcHBlZF9hbm5vdGF0aW9ucykgPC0gcm93bmFtZXMoam9pbmVkX3NldXJhdEBtZXRhLmRhdGEpICAjIFNldCBuYW1lcyB0byBjZWxsIElEcwpqb2luZWRfc2V1cmF0JEFQX05UU19DbHVzdGVyX0Fubm90YXRpb24gPC0gbWFwcGVkX2Fubm90YXRpb25zW3Jvd25hbWVzKGpvaW5lZF9zZXVyYXRAbWV0YS5kYXRhKV0KCiMgVmlzdWFsaXphdGlvbiB3aXRoIGFubm90YXRpb25zCmFwX250cyA8LSBEaW1QbG90KGpvaW5lZF9zZXVyYXQsIHJlZHVjdGlvbiA9ICJ1bWFwIiwgZ3JvdXAuYnkgPSAiQVBfTlRTX0NsdXN0ZXJfQW5ub3RhdGlvbiIsIGxhYmVsID0gVFJVRSkgKwogIHRoZW1lKGxlZ2VuZC5wb3NpdGlvbiA9ICJub25lIikgKwogIHhsYWIoInVtYXAxIikgKyB5bGFiKCJ1bWFwMiIpCgpnZ3NhdmUoaGVyZSgiaW1nL2FwX250c19hbGxfY2VsbHMucG5nIiksIGFwX250cykKcHJpbnQoYXBfbnRzKQpzYXZlUkRTKGpvaW5lZF9zZXVyYXQsICJ+L0dpdC9QMjQtMjAzL2RhdGEvam9pbmVkX3NldXJhdF9pbnRlZ3JhdGVkLnJkcyIpCmBgYAoKIyBHT0kgZXhwcmVzc2lvbiBpbiBhbGwgY2VsbHMKYGBge3J9CmZ0MSA8LSBGZWF0dXJlUGxvdChqb2luZWRfc2V1cmF0LCBmZWF0dXJlcyA9IGMoIkdmcmFsIiwgIkFkY3lhcDEiKSwgbWluLmN1dG9mZiA9ICJxMTAiKQpmdDIgPC0gRmVhdHVyZVBsb3Qoam9pbmVkX3NldXJhdCwgZmVhdHVyZXMgPSBjKCJHZnJhbCIsICJBZGN5YXAxIiksIGJsZW5kID0gVFJVRSwgcHQuc2l6ZSA9IDAuMSkgKwogIHRoZW1lKHBsb3QudGl0bGUgPSBlbGVtZW50X3RleHQoaGp1c3QgPSAwLjUpKQpnZnJhbF9jZWxscyA8LSBXaGljaENlbGxzKGpvaW5lZF9zZXVyYXQsIGV4cHJlc3Npb24gPSBHZnJhbCA+IDApCmFkY3lhcDFfY2VsbHMgPC0gV2hpY2hDZWxscyhqb2luZWRfc2V1cmF0LCBleHByZXNzaW9uID0gQWRjeWFwMSA+IDApCgpwcmludChmdDEpCnByaW50KGZ0MikKCiMgRmluZCBjZWxscyB0aGF0IGV4cHJlc3MgYm90aCBnZW5lcwpvdmVybGFwX2NlbGxzIDwtIGludGVyc2VjdChnZnJhbF9jZWxscywgYWRjeWFwMV9jZWxscykKCiMgQ29tcHV0ZSBwZXJjZW50YWdlcwp0b3RhbF9jZWxscyA8LSBsZW5ndGgoQ2VsbHMoam9pbmVkX3NldXJhdCkpCmdmcmFsX3BjdCA8LSBsZW5ndGgoZ2ZyYWxfY2VsbHMpIC8gdG90YWxfY2VsbHMgKiAxMDAKYWRjeWFwMV9wY3QgPC0gbGVuZ3RoKGFkY3lhcDFfY2VsbHMpIC8gdG90YWxfY2VsbHMgKiAxMDAKb3ZlcmxhcF9wY3QgPC0gbGVuZ3RoKG92ZXJsYXBfY2VsbHMpIC8gdG90YWxfY2VsbHMgKiAxMDAKCiMgUHJpbnQgcmVzdWx0cwpjYXQoIlBlcmNlbnRhZ2Ugb2YgY2VsbHMgZXhwcmVzc2luZyBHZnJhbDoiLCByb3VuZChnZnJhbF9wY3QsIDIpLCAiJVxuIikKY2F0KCJQZXJjZW50YWdlIG9mIGNlbGxzIGV4cHJlc3NpbmcgQWRjeWFwMToiLCByb3VuZChhZGN5YXAxX3BjdCwgMiksICIlXG4iKQpjYXQoIlBlcmNlbnRhZ2Ugb2YgY2VsbHMgZXhwcmVzc2luZyBib3RoIGdlbmVzOiIsIHJvdW5kKG92ZXJsYXBfcGN0LCAyKSwgIiVcbiIpCgpgYGAKCiMgQ3JlYXRlIFNDRQpgYGB7cn0KCiMgRXh0cmFjdCBhbGwgbGF5ZXJzIGNvbnRhaW5pbmcgcmF3IGNvdW50cwpjb3VudF9sYXllcnMgPC0gZ3JlcCgiXmNvdW50c1xcLiIsIG5hbWVzKGpvaW5lZF9zZXVyYXRAYXNzYXlzJFJOQUBsYXllcnMpLCB2YWx1ZSA9IFRSVUUpCgojIE1lcmdlIGFsbCBjb3VudCBtYXRyaWNlcwpjb3VudHNfY29tYmluZWQgPC0gZG8uY2FsbChjYmluZCwgbGFwcGx5KGNvdW50X2xheWVycywgZnVuY3Rpb24obGF5ZXIpIHsKICBqb2luZWRfc2V1cmF0QGFzc2F5cyRSTkFAbGF5ZXJzW1tsYXllcl1dCn0pKQoKIyBDcmVhdGUgU2luZ2xlQ2VsbEV4cGVyaW1lbnQgb2JqZWN0CnNjZSA8LSBTaW5nbGVDZWxsRXhwZXJpbWVudCgKICBhc3NheXMgPSBsaXN0KGNvdW50cyA9IGNvdW50c19jb21iaW5lZCksCiAgY29sRGF0YSA9IGpvaW5lZF9zZXVyYXRAbWV0YS5kYXRhICAjIFRyYW5zZmVyIG1ldGFkYXRhIGZyb20gU2V1cmF0CikKCiMgTm9ybWFsaXplIGNvdW50cwpzY2UgPC0gbG9nTm9ybUNvdW50cyhzY2UpCmFzc2F5TmFtZXMoc2NlKQoKIyBTYXZlIGZvciBsYXRlciB1c2UKc2F2ZVJEUyhzY2UsIGhlcmUoImRhdGEvam9pbmVkX3NjZS5yZHMiKSkKCmBgYAojIE5vbi1uZXVyb24gbWFya2VycwpgYGB7cn0Kbm9uX25ldXJvbnMgPC0gbGlzdC5maWxlcyhoZXJlKCJkYXRhL2Nzdi9ub25fbmV1cm9ucyIpLCBwYXR0ZXJuID0gIiouY3N2IiwgZnVsbC5uYW1lcyA9IFRSVUUpCgpub25fbmV1cm9uX2RhdGEgPC0gbGFwcGx5KG5vbl9uZXVyb25zLCByZWFkLmNzdikKbmFtZXMobm9uX25ldXJvbl9kYXRhKSA8LSBnc3ViKCIqLmNzdiIsICIiLCBiYXNlbmFtZShub25fbmV1cm9ucykpCmNlbGxleF9jdXRvZmYgPC0gMC45CmV4cHJfcHJvcG9ydGlvbl9jdXRvZmYgPC0gMTAKCiMgTG9vcCB0aHJvdWdoIHRoZSBsaXN0IGFuZCBmaWx0ZXIgZWFjaCBkYXRhIGZyYW1lCm5vbl9uZXVyb25fZmlsdGVyZWRfZGF0YSA8LSBsYXBwbHkobm9uX25ldXJvbl9kYXRhLCBmdW5jdGlvbihkZikgewogIHN1YnNldChkZiwgY2VsbGV4X3Njb3JlID49IGNlbGxleF9jdXRvZmYgJiBleHByX3Byb3BvcnRpb24gPj0gZXhwcl9wcm9wb3J0aW9uX2N1dG9mZikKfSkKCm91dHB1dF9kaXIgPC0gaGVyZSgiZGF0YS9tYXJrZXJfZ2VuZXMiKSAgIyBEaXJlY3RvcnkgdG8gc2F2ZSB0aGUgZmlsZXMKCmxhcHBseShzZXFfYWxvbmcobm9uX25ldXJvbl9maWx0ZXJlZF9kYXRhKSwgZnVuY3Rpb24oaSkgewogIG91dHB1dF9maWxlIDwtIGZpbGUucGF0aChvdXRwdXRfZGlyLCBwYXN0ZTAoIm1hcmtlcl9nZW5lc18iLCBuYW1lcyhub25fbmV1cm9uX2ZpbHRlcmVkX2RhdGEpW2ldKSkKICB3cml0ZV9jc3YoYXMuZGF0YS5mcmFtZShub25fbmV1cm9uX2ZpbHRlcmVkX2RhdGFbW2ldXSRnZW5lKSwgb3V0cHV0X2ZpbGUsIGNvbF9uYW1lcyA9IEZBTFNFKQp9KQpgYGAKCiMgTmV1cm9uIG1hcmtlcnMgCmBgYHtyfQpuZXVyb25zIDwtIGxpc3QuZmlsZXMoaGVyZSgiZGF0YS9jc3YvbmV1cm9ucyIpLCBwYXR0ZXJuID0gIiouY3N2IiwgZnVsbC5uYW1lcyA9IFRSVUUpCgpuZXVyb25fZGF0YSA8LSBsYXBwbHkobmV1cm9ucywgcmVhZC5jc3YpCm5hbWVzKG5ldXJvbl9kYXRhKSA8LSBnc3ViKCIqLmNzdiIsICIiLCBiYXNlbmFtZShuZXVyb25zKSkKY2VsbGV4X2N1dG9mZiA8LSAwLjkKZXhwcl9wcm9wb3J0aW9uX2N1dG9mZiA8LSAxMAoKIyBMb29wIHRocm91Z2ggdGhlIGxpc3QgYW5kIGZpbHRlciBlYWNoIGRhdGEgZnJhbWUKbmV1cm9uX2ZpbHRlcmVkX2RhdGEgPC0gbGFwcGx5KG5ldXJvbl9kYXRhLCBmdW5jdGlvbihkZikgewogIHN1YnNldChkZiwgY2VsbGV4X3Njb3JlID49IGNlbGxleF9jdXRvZmYgJiBleHByX3Byb3BvcnRpb24gPj0gZXhwcl9wcm9wb3J0aW9uX2N1dG9mZikKfSkKCm91dHB1dF9kaXIgPC0gaGVyZSgiZGF0YS9tYXJrZXJfZ2VuZXMiKSAgIyBEaXJlY3RvcnkgdG8gc2F2ZSB0aGUgZmlsZXMKCmxhcHBseShzZXFfYWxvbmcobmV1cm9uX2ZpbHRlcmVkX2RhdGEpLCBmdW5jdGlvbihpKSB7CiAgb3V0cHV0X2ZpbGUgPC0gZmlsZS5wYXRoKG91dHB1dF9kaXIsIHBhc3RlMCgibWFya2VyX2dlbmVzXyIsIG5hbWVzKG5ldXJvbl9maWx0ZXJlZF9kYXRhKVtpXSkpCiAgd3JpdGVfY3N2KGFzLmRhdGEuZnJhbWUobmV1cm9uX2ZpbHRlcmVkX2RhdGFbW2ldXSRnZW5lKSwgb3V0cHV0X2ZpbGUsIGNvbF9uYW1lcyA9IEZBTFNFKQp9KQpgYGAKCiMgQ2x1c3RlciBhbm5vdGF0aW9uIChub24tbmV1cm9ucyArIG5ldXJvbnMpCmBgYHtyIG1lc3NhZ2U9RkFMU0UsIHdhcm5pbmc9RkFMU0V9CgojIERlZmluZSBkaXJlY3Rvcnkgd2hlcmUgeW91ciBtYXJrZXIgZ2VuZSBmaWxlcyBhcmUgc3RvcmVkCm1hcmtlcl9kaXIgPC0gaGVyZSgiZGF0YS9tYXJrZXJfZ2VuZXMiKSAKCiMgTGlzdCBhbGwgbWFya2VyIGdlbmUgZmlsZXMKbWFya2VyX2ZpbGVzIDwtIGxpc3QuZmlsZXMobWFya2VyX2RpciwgcGF0dGVybiA9ICJtYXJrZXJfZ2VuZXNfLipcXC5jc3YiLCBmdWxsLm5hbWVzID0gVFJVRSkKCiMgRXh0cmFjdCBjZWxsIHR5cGUgbmFtZXMgZnJvbSB0aGUgZmlsZSBuYW1lcwpjZWxsX3R5cGVzIDwtIGdzdWIoIm1hcmtlcl9nZW5lc198XFwuY3N2IiwgIiIsIGJhc2VuYW1lKG1hcmtlcl9maWxlcykpCgojIFJlYWQgbWFya2VyIGdlbmUgbGlzdHMgYW5kIGFzc2lnbiBjZWxsIHR5cGUgbmFtZXMKbWFya2VyX2dlbmVfbGlzdHMgPC0gbGFwcGx5KG1hcmtlcl9maWxlcywgZnVuY3Rpb24oZmlsZSkgewogIGRhdGEgPC0gcmVhZC5jc3YoZmlsZSwgaGVhZGVyID0gVFJVRSwgc3RyaW5nc0FzRmFjdG9ycyA9IEZBTFNFKQogIHVubGlzdChkYXRhKSAgIyBFbnN1cmUgdGhlIG1hcmtlciBnZW5lcyBhcmUgYSBjaGFyYWN0ZXIgdmVjdG9yCn0pCm5hbWVzKG1hcmtlcl9nZW5lX2xpc3RzKSA8LSBjZWxsX3R5cGVzICAjIEFkZCBjZWxsIHR5cGUgbmFtZXMgdG8gdGhlIGxpc3QKCiMgRW5zdXJlIHRoZSBtYXJrZXIgZ2VuZXMgYXJlIHByZXNlbnQgaW4geW91ciBkYXRhc2V0CmZpbHRlcmVkX21hcmtlcl9nZW5lcyA8LSBsYXBwbHkobWFya2VyX2dlbmVfbGlzdHMsIGZ1bmN0aW9uKGdlbmVzKSB7CiAgaW50ZXJzZWN0KGdlbmVzLCByb3duYW1lcyhqb2luZWRfc2V1cmF0QGFzc2F5cyRSTkEpKQp9KQoKYWxsLnNldHMgPC0gbGFwcGx5KG5hbWVzKGZpbHRlcmVkX21hcmtlcl9nZW5lcyksIGZ1bmN0aW9uKHgpIHsKICAgIEdlbmVTZXQoZmlsdGVyZWRfbWFya2VyX2dlbmVzW1t4XV0sIHNldE5hbWU9eCkgICAgICAgIAp9KQphbGwuc2V0cyA8LSBHZW5lU2V0Q29sbGVjdGlvbihhbGwuc2V0cykKCnJvd25hbWVzKHNjZSkgPC0gcm93bmFtZXMoam9pbmVkX3NldXJhdCkKCnJhbmtpbmdzIDwtIEFVQ2VsbF9idWlsZFJhbmtpbmdzKGNvdW50cyhzY2UpLAogICAgcGxvdFN0YXRzPUZBTFNFLCB2ZXJib3NlPUZBTFNFKQpnYygpCmNlbGwuYXVjcyA8LSBBVUNlbGxfY2FsY0FVQyhhbGwuc2V0cywgcmFua2luZ3MpCgpyZXN1bHRzIDwtIHQoYXNzYXkoY2VsbC5hdWNzKSkKaGVhZChyZXN1bHRzKQoKc2F2ZVJEUyhyZXN1bHRzLCBoZXJlKCJkYXRhL2NlbGxfYW5ub19yZXN1bHRzLnJkcyIpKQoKbmV3LmxhYmVscyA8LSBjb2xuYW1lcyhyZXN1bHRzKVttYXguY29sKHJlc3VsdHMpXQp0YWIgPC0gdGFibGUobmV3LmxhYmVscywgc2NlJHNldXJhdF9jbHVzdGVycykKCiMgUGxvdCB0byBzZWUgdGhlIGRpc3RyaWJ1dGlvbiBvZiBBVUNzIGFjcm9zcyBjZWxscyBmb3IgZWFjaCBsYWJlbAoKI3Bsb3RfZ3JpZChBVUNlbGxfZXhwbG9yZVRocmVzaG9sZHMoY2VsbC5hdWNzWzJdLCBwbG90SGlzdD1UUlVFLCBhc3NpZ249VFJVRSksIAojICAgICAgICAgIEFVQ2VsbF9leHBsb3JlVGhyZXNob2xkcyhjZWxsLmF1Y3NbMTBdLCBwbG90SGlzdD1UUlVFLCBhc3NpZ249VFJVRSksIAojICAgICAgICAgIEFVQ2VsbF9leHBsb3JlVGhyZXNob2xkcyhjZWxsLmF1Y3NbMTVdLCBwbG90SGlzdD1UUlVFLCBhc3NpZ249VFJVRSksCiMgICAgICAgICAgQVVDZWxsX2V4cGxvcmVUaHJlc2hvbGRzKGNlbGwuYXVjc1syMl0sIHBsb3RIaXN0PVRSVUUsIGFzc2lnbj1UUlVFKSkKCgpgYGAKIyBQbG90IGNsdXN0ZXIgYW5ub3RhdGlvbgpgYGB7ciBtZXNzYWdlPUZBTFNFLCB3YXJuaW5nPUZBTFNFfQpqb2luZWRfc2V1cmF0JHByZWRpY3RlZF9jZWxsX3R5cGUgPC0gbmV3LmxhYmVscwoKIyBQbG90IHdpdGggcHJlZGljdGVkIGNlbGwgdHlwZXMKb3B0aW9ucyhnZ3JlcGVsLm1heC5vdmVybGFwcyA9IEluZikKYWxsX2NlbGxzIDwtIERpbVBsb3Qoam9pbmVkX3NldXJhdCwgZ3JvdXAuYnkgPSAicHJlZGljdGVkX2NlbGxfdHlwZSIsIGxhYmVsID0gVFJVRSwgcmVwZWwgPSBUUlVFKSArIAogIGdndGl0bGUoIlByZWRpY3RlZCBDZWxsIFR5cGUgQW5ub3RhdGlvbnMiKQpwcmludChhbGxfY2VsbHMpCmdnc2F2ZShoZXJlKCJpbWcvYWxsX2NlbGxzX3Bsb3QucG5nIiksIGFsbF9jZWxscykKCmBgYAoKIyBHZW5lIGV4cHJlc3Npb24gb3ZlcmxhcCBieSBjbHVzdGVyCgpgYGB7ciBtZXNzYWdlPUZBTFNFLCB3YXJuaW5nPUZBTFNFfSAKIyBHZXQgY2VsbCB0eXBlIGlkZW50aXRpZXMKSWRlbnRzKGpvaW5lZF9zZXVyYXQpIDwtICJwcmVkaWN0ZWRfY2VsbF90eXBlIiAgIyBSZXBsYWNlIHdpdGggdGhlIGNvcnJlY3QgbWV0YWRhdGEgY29sdW1uIGZvciBjbHVzdGVycwoKIyBGdW5jdGlvbiB0byBjb21wdXRlIHBlcmNlbnRhZ2VzIHBlciBjZWxsIHR5cGUKZ2V0X292ZXJsYXBfYnlfY2x1c3RlciA8LSBmdW5jdGlvbihzZXVyYXRfb2JqLCBnZW5lMSwgZ2VuZTIpIHsKICBjbHVzdGVyX2xldmVscyA8LSBsZXZlbHMoc2V1cmF0X29iaikKICByZXN1bHRzIDwtIGRhdGEuZnJhbWUoQ2x1c3RlciA9IGNoYXJhY3RlcigpLCBHZnJhbF9wY3QgPSBudW1lcmljKCksIEFkY3lhcDFfcGN0ID0gbnVtZXJpYygpLCBCb3RoX3BjdCA9IG51bWVyaWMoKSkKICAKICBmb3IgKGNsdXN0ZXIgaW4gY2x1c3Rlcl9sZXZlbHMpIHsKICAgIGNlbGxzX2luX2NsdXN0ZXIgPC0gV2hpY2hDZWxscyhzZXVyYXRfb2JqLCBpZGVudHMgPSBjbHVzdGVyKQogICAgCiAgICBnZnJhbF9jZWxscyA8LSBXaGljaENlbGxzKHNldXJhdF9vYmosIGV4cHJlc3Npb24gPSAhIXN5bShnZW5lMSkgPiAwKQogICAgYWRjeWFwMV9jZWxscyA8LSBXaGljaENlbGxzKHNldXJhdF9vYmosIGV4cHJlc3Npb24gPSAhIXN5bShnZW5lMikgPiAwKQogICAgCiAgICBvdmVybGFwX2NlbGxzIDwtIGludGVyc2VjdChnZnJhbF9jZWxscywgYWRjeWFwMV9jZWxscykKICAgIAogICAgZ2ZyYWxfcGN0IDwtIHJvdW5kKGxlbmd0aChpbnRlcnNlY3QoY2VsbHNfaW5fY2x1c3RlciwgZ2ZyYWxfY2VsbHMpKSAvIGxlbmd0aChjZWxsc19pbl9jbHVzdGVyKSAqIDEwMCwzKQogICAgYWRjeWFwMV9wY3QgPC0gcm91bmQobGVuZ3RoKGludGVyc2VjdChjZWxsc19pbl9jbHVzdGVyLCBhZGN5YXAxX2NlbGxzKSkgLyBsZW5ndGgoY2VsbHNfaW5fY2x1c3RlcikgKiAxMDAsMykKICAgIG92ZXJsYXBfcGN0IDwtIHJvdW5kKGxlbmd0aChpbnRlcnNlY3QoY2VsbHNfaW5fY2x1c3Rlciwgb3ZlcmxhcF9jZWxscykpIC8gbGVuZ3RoKGNlbGxzX2luX2NsdXN0ZXIpICogMTAwLDMpCiAgICAKICAgIHJlc3VsdHMgPC0gcmJpbmQocmVzdWx0cywgZGF0YS5mcmFtZShDbHVzdGVyID0gY2x1c3RlciwgR2ZyYWxfcGN0ID0gZ2ZyYWxfcGN0LCBBZGN5YXAxX3BjdCA9IGFkY3lhcDFfcGN0LCBCb3RoX3BjdCA9IG92ZXJsYXBfcGN0KSkKICB9CiAgCiAgcmV0dXJuKHJlc3VsdHMpCn0KCiMgUnVuIHRoZSBmdW5jdGlvbgpvdmVybGFwX3Jlc3VsdHMgPC0gZ2V0X292ZXJsYXBfYnlfY2x1c3Rlcihqb2luZWRfc2V1cmF0LCAiR2ZyYWwiLCAiQWRjeWFwMSIpCnByaW50KG92ZXJsYXBfcmVzdWx0cykKCmBgYAoKIyBTdWJzZXQgdG8ga2VlcCBhbm5vdGF0ZWQgbmV1cm9ucwpgYGB7ciBtZXNzYWdlPUZBTFNFLCB3YXJuaW5nPUZBTFNFfQpuZXVyb25fdHlwZXMgPSBjKCJjaGF0MSIsImNoYXQyIiwiY2hhdDMiLCJHbHUxIiwiR2x1MiIsIkdsdTMiLCJHbHU0IiwiR2x1NSIsIkdsdTYiLAogICAgICAgICAgICAgICAgICJHbHU3IiwiR2x1OCIsIkdsdTkiLCJHbHUxMCIsIkdsdTExIiwiR2x1MTIiLCJHbHUxMyIsIkdsdTE0IiwiR2x1MTUiLAogICAgICAgICAgICAgICAgICJHQUJBMSIsIkdBQkEyIiwiR0FCQTMiLCJHQUJBNCIsIkdBQkE1IiwiR0FCQTYiLCJHQUJBNyIpCgpub25fbmV1cm9uX3R5cGVzID0gYygiYXN0cm9jeXRlcyIsIk9QQ3MiLCJlcGVuZHltYWxfY2VsbHMiLCJlbmRvdGhlbGlhbF9jZWxscyIsCiAgICAgICAgICAgICAgICAgICAgICJvbGlnb2RlbmRyb2N5dGVzIiwidGFuY3l0ZS1saWtlX2NlbGxzIiwibWljcm9nbGlhIiwiVkxNQ3MiKQoKam9pbmVkX3NldXJhdCRuZXVyb25fc3RhdHVzIDwtIGlmZWxzZShqb2luZWRfc2V1cmF0JHByZWRpY3RlZF9jZWxsX3R5cGUgJWluJSBuZXVyb25fdHlwZXMsICJuZXVyb24iLCAibm9uLW5ldXJvbiIpCgoKbmV1cm9uX3NldXJhdCA8LSBzdWJzZXQoam9pbmVkX3NldXJhdCwgc3Vic2V0ID0gbmV1cm9uX3N0YXR1cyA9PSAibmV1cm9uIikKCgpvdmVybGFwX3Jlc3VsdHNfbmV1cm9uIDwtIGdldF9vdmVybGFwX2J5X2NsdXN0ZXIobmV1cm9uX3NldXJhdCwgIkdmcmFsIiwgIkFkY3lhcDEiKQpwcmludChvdmVybGFwX3Jlc3VsdHNfbmV1cm9uKQoKRGltUGxvdChuZXVyb25fc2V1cmF0LCBncm91cC5ieSA9ICJwcmVkaWN0ZWRfY2VsbF90eXBlIiwgbGFiZWwgPSBUUlVFLCByZXBlbCA9IFRSVUUpICsgCiAgZ2d0aXRsZSgiUHJlZGljdGVkIENlbGwgVHlwZSBBbm5vdGF0aW9ucyIpCgpgYGAKCiMgUmUtc2NhbGUgYW5kIHJlLWNsdXN0ZXIgbmV1cm9ucwpgYGB7ciBtZXNzYWdlPUZBTFNFLCB3YXJuaW5nPUZBTFNFfQoKbmV1cm9uX3NldXJhdCA8LSBGaW5kVmFyaWFibGVGZWF0dXJlcyhvYmplY3QgPSBuZXVyb25fc2V1cmF0LCBzZWxlY3Rpb24ubWV0aG9kID0gInZzdCIsIG5mZWF0dXJlcyA9IDIwMDAsIHZlcmJvc2UgPSBGQUxTRSkKbmV1cm9uX3NldXJhdCA8LSBTY2FsZURhdGEobmV1cm9uX3NldXJhdCwgdmFycy50by5yZWdyZXNzID0gIm5Db3VudF9STkEiLCB2ZXJib3NlID0gRkFMU0UpCm5ldXJvbl9zZXVyYXQgPC0gUnVuUENBKG5ldXJvbl9zZXVyYXQsIG5wY3MgPSAzMCwgdmVyYm9zZSA9IEZBTFNFKQpFbGJvd1Bsb3QobmV1cm9uX3NldXJhdCkKbmV1cm9uX3NldXJhdCA8LSBSdW5VTUFQKG5ldXJvbl9zZXVyYXQsIHJlZHVjdGlvbiA9ICJwY2EiLCBkaW1zID0gMToxMCwgdmVyYm9zZSA9IEYpCgpuZXVyb25fc2V1cmF0IDwtIEZpbmROZWlnaGJvcnMob2JqZWN0ID0gbmV1cm9uX3NldXJhdCwgZGltcyA9IDE6MzAsIHZlcmJvc2UgPSBGQUxTRSkKbmV1cm9uX3NldXJhdCA8LSBGaW5kQ2x1c3RlcnMob2JqZWN0ID0gbmV1cm9uX3NldXJhdCwgcmVzb2x1dGlvbiA9IDAuOCwgdmVyYm9zZSA9IEZBTFNFKSAKCm5ldXJvbl9zZXVyYXQgPC0gU2V0SWRlbnQobmV1cm9uX3NldXJhdCwgdmFsdWUgPSAiUk5BX3Nubl9yZXMuMC44IikKY2x1cyA8LSBEaW1QbG90KG5ldXJvbl9zZXVyYXQsbGFiZWwgPSBUUlVFKSArIE5vTGVnZW5kKCkKcHJpbnQoY2x1cykKZ2dzYXZlKGhlcmUoImltZy9uZXVyb25fY2x1c3RlcnNfcmVzXzAuOC5wbmciKSwgY2x1cykKCmNsdXN0ZXJfYXNzaWdubWVudHMgPC0gbmV1cm9uX3NldXJhdEBtZXRhLmRhdGEkc2V1cmF0X2NsdXN0ZXJzCgpuYW1lcyhjbHVzdGVyX2Fzc2lnbm1lbnRzKSA8LSBjb2xuYW1lcyhuZXVyb25fc2V1cmF0KQoKc2F2ZVJEUyhuZXVyb25fc2V1cmF0LCBoZXJlKCJkYXRhL25ldXJvbl9zdWJzZXQucmRzIikpCgpgYGAKCiMgTmV1cm9uIGNsdXN0ZXIgY29tcG9zaXRpb24KYGBge3IgbWVzc2FnZT1GQUxTRSwgd2FybmluZz1GQUxTRX0KbmV1cm9uX2NsdXNfY29tcCA8LSBwbG90X2ludGVncmF0ZWRfY2x1c3RlcnMobmV1cm9uX3NldXJhdCkKcHJpbnQobmV1cm9uX2NsdXNfY29tcCkKZ2dzYXZlKGhlcmUoImltZy9uZXVyb25fY2x1c3Rlcl9jb21wLnBuZyIpLCBuZXVyb25fY2x1c19jb21wKQpgYGAKCiMgUGxvdCB0aGUgZXhwcmVzc2lvbiB2YWx1ZXMgZm9yIEdmcmFsL0FkY3lhcDEgaW4gbmV1cm9ucwpgYGB7ciBtZXNzYWdlPUZBTFNFLCB3YXJuaW5nPUZBTFNFfQpmdDEgPC0gRmVhdHVyZVBsb3QobmV1cm9uX3NldXJhdCwgZmVhdHVyZXMgPSBjKCJHZnJhbCIsICJBZGN5YXAxIiksIG1pbi5jdXRvZmYgPSAicTEwIikKZnQyIDwtIEZlYXR1cmVQbG90KG5ldXJvbl9zZXVyYXQsIGZlYXR1cmVzID0gYygiR2ZyYWwiLCAiQWRjeWFwMSIpLCBibGVuZCA9IFRSVUUsIHB0LnNpemUgPSAwLjEpICsKICB0aGVtZShwbG90LnRpdGxlID0gZWxlbWVudF90ZXh0KGhqdXN0ID0gMC41KSkKZ2ZyYWxfY2VsbHMgPC0gV2hpY2hDZWxscyhuZXVyb25fc2V1cmF0LCBleHByZXNzaW9uID0gR2ZyYWwgPiAwKQphZGN5YXAxX2NlbGxzIDwtIFdoaWNoQ2VsbHMobmV1cm9uX3NldXJhdCwgZXhwcmVzc2lvbiA9IEFkY3lhcDEgPiAwKQoKcHJpbnQoZnQxKQpwcmludChmdDIpCmdnc2F2ZShoZXJlKCJpbWcvZXhwcmVzc2lvbl9nZnJhbF9hZGN5YXAxX25ldXJvbnMucG5nIiksIGZ0MSkKZ2dzYXZlKGhlcmUoImltZy9Dby1leHByZXNzaW9uX2dmcmFsX2FkY3lhcDFfbmV1cm9ucy5wbmciKSwgZnQyKQpgYGAKCiMgQ2hlY2sgQVAvTlRTIGFubm90YXRpb24gaW4gbmV1cm9ucwpgYGB7cn0KRGltUGxvdChuZXVyb25fc2V1cmF0LCBncm91cC5ieSA9ICJBUF9OVFNfQ2x1c3Rlcl9Bbm5vdGF0aW9uIiwgbGFiZWwgPSBUUlVFLCByZXBlbCA9IFRSVUUpICsgCiAgZ2d0aXRsZSgiTmV1cm9uIEFQIG9yIE5UUyIpCmBgYAoKIyBSZS1hbm5vdGF0ZSBuZXVyb24gY2x1c3RlcnMKYGBge3IgbWVzc2FnZT1GQUxTRSwgd2FybmluZz1GQUxTRX0KIyBDcmVhdGUgU2luZ2xlQ2VsbEV4cGVyaW1lbnQgb2JqZWN0CmNvdW50X2xheWVycyA8LSBncmVwKCJeY291bnRzXFwuIiwgbmFtZXMobmV1cm9uX3NldXJhdEBhc3NheXMkUk5BQGxheWVycyksIHZhbHVlID0gVFJVRSkKCiMgTWVyZ2UgYWxsIGNvdW50IG1hdHJpY2VzCmNvdW50c19jb21iaW5lZCA8LSBkby5jYWxsKGNiaW5kLCBsYXBwbHkoY291bnRfbGF5ZXJzLCBmdW5jdGlvbihsYXllcikgewogIG5ldXJvbl9zZXVyYXRAYXNzYXlzJFJOQUBsYXllcnNbW2xheWVyXV0KfSkpCgpzY2VfbmV1cm9uIDwtIFNpbmdsZUNlbGxFeHBlcmltZW50KAogIGFzc2F5cyA9IGxpc3QoY291bnRzID0gY291bnRzX2NvbWJpbmVkKSwKICBjb2xEYXRhID0gbmV1cm9uX3NldXJhdEBtZXRhLmRhdGEgICMgVHJhbnNmZXIgbWV0YWRhdGEgZnJvbSBTZXVyYXQKKQoKIyBOb3JtYWxpemUgY291bnRzCnNjZV9uZXVyb24gPC0gbG9nTm9ybUNvdW50cyhzY2VfbmV1cm9uKQphc3NheU5hbWVzKHNjZV9uZXVyb24pCgpyb3duYW1lcyhzY2VfbmV1cm9uKSA8LSByb3duYW1lcyhuZXVyb25fc2V1cmF0KQoKc2F2ZVJEUyhzY2VfbmV1cm9uLCBoZXJlKCJkYXRhL3NjZV9uZXVyb24ucmRzIikpCiNzY2VfbmV1cm9uIDwtIHJlYWRSRFMoaGVyZSgiZGF0YS9zY2VfbmV1cm9uLnJkcyIpKQojbmV1cm9uX3NldXJhdCA8LSByZWFkUkRTKGhlcmUoImRhdGEvbmV1cm9uX3N1YnNldC5yZHMiKSkKCiMjIE1BUktFUiBHRU5FIFNFVCAjIyAKIyBMb2FkIG1hcmtlciBnZW5lcwptYXJrZXJfZGlyIDwtIGhlcmUoImRhdGEvbmV1cm9uX21hcmtlcl9nZW5lcyIpICAjIFVwZGF0ZSB3aXRoIHlvdXIgYWN0dWFsIHBhdGgKCiMgTGlzdCBhbGwgbWFya2VyIGdlbmUgZmlsZXMKbWFya2VyX2ZpbGVzIDwtIGxpc3QuZmlsZXMobWFya2VyX2RpciwgcGF0dGVybiA9ICJtYXJrZXJfZ2VuZXNfLipcXC5jc3YiLCBmdWxsLm5hbWVzID0gVFJVRSkKCiMgRXh0cmFjdCBjZWxsIHR5cGUgbmFtZXMgZnJvbSB0aGUgZmlsZSBuYW1lcwpjZWxsX3R5cGVzIDwtIGdzdWIoIm1hcmtlcl9nZW5lc198XFwuY3N2IiwgIiIsIGJhc2VuYW1lKG1hcmtlcl9maWxlcykpCgojIFJlYWQgbWFya2VyIGdlbmUgbGlzdHMgYW5kIGFzc2lnbiBjZWxsIHR5cGUgbmFtZXMKbWFya2VyX2dlbmVfbGlzdHMgPC0gbGFwcGx5KG1hcmtlcl9maWxlcywgZnVuY3Rpb24oZmlsZSkgewogIGRhdGEgPC0gcmVhZC5jc3YoZmlsZSwgaGVhZGVyID0gVFJVRSwgc3RyaW5nc0FzRmFjdG9ycyA9IEZBTFNFKQogIHVubGlzdChkYXRhKSAgIyBFbnN1cmUgdGhlIG1hcmtlciBnZW5lcyBhcmUgYSBjaGFyYWN0ZXIgdmVjdG9yCn0pCm5hbWVzKG1hcmtlcl9nZW5lX2xpc3RzKSA8LSBjZWxsX3R5cGVzICAjIEFkZCBjZWxsIHR5cGUgbmFtZXMgdG8gdGhlIGxpc3QKCiMgRW5zdXJlIHRoZSBtYXJrZXIgZ2VuZXMgYXJlIHByZXNlbnQgaW4geW91ciBkYXRhc2V0CmZpbHRlcmVkX21hcmtlcl9nZW5lcyA8LSBsYXBwbHkobWFya2VyX2dlbmVfbGlzdHMsIGZ1bmN0aW9uKGdlbmVzKSB7CiAgaW50ZXJzZWN0KGdlbmVzLCByb3duYW1lcyhuZXVyb25fc2V1cmF0QGFzc2F5cyRSTkEpKQp9KQoKYWxsLnNldHMgPC0gbGFwcGx5KG5hbWVzKGZpbHRlcmVkX21hcmtlcl9nZW5lcyksIGZ1bmN0aW9uKHgpIHsKICAgIEdlbmVTZXQoZmlsdGVyZWRfbWFya2VyX2dlbmVzW1t4XV0sIHNldE5hbWU9eCkgICAgICAgIAp9KQphbGwuc2V0cyA8LSBHZW5lU2V0Q29sbGVjdGlvbihhbGwuc2V0cykKCiMjIEFOTk9UQVRJT04gIyMgCnJhbmtpbmdzIDwtIEFVQ2VsbF9idWlsZFJhbmtpbmdzKGNvdW50cyhzY2VfbmV1cm9uKSwKICAgIHBsb3RTdGF0cz1GQUxTRSwgdmVyYm9zZT1GQUxTRSkKY2VsbC5hdWNzIDwtIEFVQ2VsbF9jYWxjQVVDKGFsbC5zZXRzLCByYW5raW5ncykKCnJlc3VsdHMgPC0gdChhc3NheShjZWxsLmF1Y3MpKQpoZWFkKHJlc3VsdHMpCm5ldXJvbl9yZXN1bHRzIDwtIHJlc3VsdHMKc2F2ZVJEUyhyZXN1bHRzLCBoZXJlKCJkYXRhL25ldXJvbl9jZWxsX2Fubm9fcmVzdWx0cy5yZHMiKSkKCiNyZXN1bHRzIDwtIHJlYWRSRFMoaGVyZSgiZGF0YS9uZXVyb25fY2VsbF9hbm5vX3Jlc3VsdHMucmRzIikpCm5ldy5sYWJlbHMgPC0gY29sbmFtZXMocmVzdWx0cylbbWF4LmNvbChyZXN1bHRzKV0KCm5ldXJvbl9zZXVyYXQkbmV1cm9uX2NlbGxfdHlwZSA8LSBuZXcubGFiZWxzCnRhYmxlKG5ldXJvbl9zZXVyYXQkbmV1cm9uX2NlbGxfdHlwZSwgbmV1cm9uX3NldXJhdCRSTkFfc25uX3Jlcy4wLjgpCiMgUGxvdCB3aXRoIHByZWRpY3RlZCBjZWxsIHR5cGVzCm9wdGlvbnMoZ2dyZXBlbC5tYXgub3ZlcmxhcHMgPSBJbmYpCm5ldXJvbl9zZXVyYXQgPC0gU2V0SWRlbnQobmV1cm9uX3NldXJhdCwgdmFsdWUgPSAiUk5BX3Nubl9yZXMuMC44IikKbmV1cm9uX2FubiA8LSBEaW1QbG90KG5ldXJvbl9zZXVyYXQsIGdyb3VwLmJ5ID0gIm5ldXJvbl9jZWxsX3R5cGUiLCBsYWJlbCA9IFRSVUUsIHJlcGVsID0gVFJVRSkgKyAKICBnZ3RpdGxlKCJQcmVkaWN0ZWQgTmV1cm9uIENlbGwgVHlwZSBBbm5vdGF0aW9ucyIpCnByaW50KG5ldXJvbl9hbm4pCmdnc2F2ZShoZXJlKCJpbWcvbmV1cm9uX2Fubm9fY2x1c3RlcnMucG5nIiksIG5ldXJvbl9hbm4pCmBgYAoKYGBge3J9CiMgR2V0IGNlbGwgdHlwZSBpZGVudGl0aWVzCklkZW50cyhuZXVyb25fc2V1cmF0KSA8LSAibmV1cm9uX2NlbGxfdHlwZSIKb3ZlcmxhcF9yZXN1bHRzIDwtIGdldF9vdmVybGFwX2J5X2NsdXN0ZXIobmV1cm9uX3NldXJhdCwgIkdmcmFsIiwgIkFkY3lhcDEiKQpwcmludChvdmVybGFwX3Jlc3VsdHMpCmBgYAojIExvb2sgYXQgdGhlIFBlYXJzb24gYW5kIFNwZWFybWFuIGNvZWZmY2llbnRzIGZvciBjby1leHByZXNzaW9uIEdmcmFsL0FkY3lhcDEKYGBge3IgbWVzc2FnZT1GQUxTRSwgd2FybmluZz1GQUxTRX0KIyBFeHRyYWN0IGV4cHJlc3Npb24gdmFsdWVzIGZvciB0d28gZ2VuZXMKZ2VuZTEgPC0gIkdmcmFsIiAgIyBSZXBsYWNlIHdpdGggeW91ciBnZW5lIG5hbWUKZ2VuZTIgPC0gIkFkY3lhcDEiCgphbGxfZGF0YV9sYXllcnMgPC0gZ3JlcCgiXmRhdGFcXC4iLCBMYXllcnMobmV1cm9uX3NldXJhdFtbIlJOQSJdXSksIHZhbHVlID0gVFJVRSkKIyBFeHRyYWN0IGV4cHJlc3Npb24gZGF0YSBmcm9tIGFsbCBsYXllcnMgYW5kIGNvbWJpbmUKZXhwcl9saXN0IDwtIGxhcHBseShhbGxfZGF0YV9sYXllcnMsIGZ1bmN0aW9uKGxheWVyKSB7CiAgR2V0QXNzYXlEYXRhKG5ldXJvbl9zZXVyYXQsIGFzc2F5ID0gIlJOQSIsIGxheWVyID0gbGF5ZXIpCn0pCgojIE1lcmdlIGFsbCBleHRyYWN0ZWQgZXhwcmVzc2lvbiBtYXRyaWNlcyAoY29sdW1uLXdpc2U6IGNlbGxzIGFyZSBpbiBjb2x1bW5zKQpleHByX21hdHJpeF9hbGwgPC0gZG8uY2FsbChjYmluZCwgZXhwcl9saXN0KQpleHByX2dlbmUxIDwtIGV4cHJfbWF0cml4X2FsbFtnZW5lMSwgXQpleHByX2dlbmUyIDwtIGV4cHJfbWF0cml4X2FsbFtnZW5lMiwgXQoKSWRlbnRzKG5ldXJvbl9zZXVyYXQpIDwtICJuZXVyb25fY2VsbF90eXBlIgoKIyBDb21wdXRlIFBlYXJzb24gY29ycmVsYXRpb24KY29ycmVsYXRpb24gPC0gY29yKGV4cHJfZ2VuZTEsIGV4cHJfZ2VuZTIsIG1ldGhvZCA9ICJwZWFyc29uIiwgdXNlID0gImNvbXBsZXRlLm9icyIpCnByaW50KGNvcnJlbGF0aW9uKQoKZ2V0X2dlbmVfY29ycmVsYXRpb25fYnlfY2x1c3RlciA8LSBmdW5jdGlvbihzZXVyYXRfb2JqLCBnZW5lMSwgZ2VuZTIpIHsKICBjbHVzdGVyX2xldmVscyA8LSBsZXZlbHMoc2V1cmF0X29iaikKICByZXN1bHRzIDwtIGRhdGEuZnJhbWUoQ2x1c3RlciA9IGNoYXJhY3RlcigpLCBQZWFyc29uID0gbnVtZXJpYygpLCBTcGVhcm1hbiA9IG51bWVyaWMoKSkKICAKICBmb3IgKGNsdXN0ZXIgaW4gY2x1c3Rlcl9sZXZlbHMpIHsKICAgIGNlbGxzX2luX2NsdXN0ZXIgPC0gV2hpY2hDZWxscyhzZXVyYXRfb2JqLCBpZGVudHMgPSBjbHVzdGVyKQogICAgCiAgICBleHByX2dlbmUxIDwtIEZldGNoRGF0YShzZXVyYXRfb2JqLCB2YXJzID0gZ2VuZTEpW2NlbGxzX2luX2NsdXN0ZXIsICwgZHJvcCA9IEZBTFNFXQogICAgZXhwcl9nZW5lMiA8LSBGZXRjaERhdGEoc2V1cmF0X29iaiwgdmFycyA9IGdlbmUyKVtjZWxsc19pbl9jbHVzdGVyLCAsIGRyb3AgPSBGQUxTRV0KICAgIAogICAgaWYgKGxlbmd0aChjZWxsc19pbl9jbHVzdGVyKSA+IDUpIHsgICMgQXZvaWQgZXJyb3JzIHdpdGggdmVyeSBzbWFsbCBjbHVzdGVycwogICAgICBwZWFyc29uX2NvcnIgPC0gY29yKGV4cHJfZ2VuZTFbLCAxXSwgZXhwcl9nZW5lMlssIDFdLCBtZXRob2QgPSAicGVhcnNvbiIsIHVzZSA9ICJjb21wbGV0ZS5vYnMiKQogICAgICBzcGVhcm1hbl9jb3JyIDwtIGNvcihleHByX2dlbmUxWywgMV0sIGV4cHJfZ2VuZTJbLCAxXSwgbWV0aG9kID0gInNwZWFybWFuIiwgdXNlID0gImNvbXBsZXRlLm9icyIpCiAgICAgIAogICAgICByZXN1bHRzIDwtIHJiaW5kKHJlc3VsdHMsIGRhdGEuZnJhbWUoQ2x1c3RlciA9IGNsdXN0ZXIsIFBlYXJzb24gPSBwZWFyc29uX2NvcnIsIFNwZWFybWFuID0gc3BlYXJtYW5fY29ycikpCiAgICB9CiAgfQogIAogIHJldHVybihyZXN1bHRzKQp9CgojIFJ1biB0aGUgZnVuY3Rpb24KY29ycmVsYXRpb25fcmVzdWx0cyA8LSBnZXRfZ2VuZV9jb3JyZWxhdGlvbl9ieV9jbHVzdGVyKG5ldXJvbl9zZXVyYXQsICJHZnJhbCIsICJBZGN5YXAxIikKcHJpbnQoY29ycmVsYXRpb25fcmVzdWx0cykKCgpgYGAKCiMgUnVuIHNjTGluayB0byBsb29rIGF0IHRoZSBjby1leHByZXNzaW9uIEdmcmFsL0FkY3lhcDEKYGBge3IgbWVzc2FnZT1GQUxTRSwgd2FybmluZz1GQUxTRX0KI3NhdmVSRFMoZXhwcl9tYXRyaXhfYWxsLCBoZXJlKCJkYXRhL2V4cHJfbWF0cml4X2FsbC5yZHMiKSkKI3NhdmVSRFMobmV1cm9uX3NldXJhdCwgaGVyZSgiZGF0YS9uZXVyb25fc2V1cmF0XzIucmRzIikpCmNvdW50IDwtIHQoZXhwcl9tYXRyaXhfYWxsKQpnZW5lcyA8LSBjKCJHZnJhbCIsIkFkY3lhcDEiLCJHbHAxciIsIkdwYzMiKQoKY291bnQubm9ybSA8LSBzY2xpbmtfbm9ybShjb3VudCwgc2NhbGUuZmFjdG9yID0gMWU2LCBmaWx0ZXIuZ2VuZXMgPSBGQUxTRSwgZ2VuZS5uYW1lcyA9IGdlbmVzKQpnYygpCgpuZXR3b3JrcyA8LSBzY2xpbmtfbmV0KGV4cHIgPSBjb3VudC5ub3JtLCBuY29yZXMgPSAxLCBsZGEgPSBzZXEoMC41LCAwLjEsIC0wLjA1KSkKCm5ldHdvcmtzJGNvclsxOjQsMTo0XQoKYGBgCgojIFJlc3VsdHMgZm9yIG9uZSBjbHVzdGVyIGZyb20gc2NMaW5rCmBgYHtyfQpuZXQxID0gbmV0d29ya3Mkc3VtbWFyeVtbMV1dCgpuYW1lcyhuZXQxKQpgYGAKCiMgUnVuIHNjTGluayBmb3Igb25seSBvbmUgY2VsbCB0eXBlCmBgYHtyIG1lc3NhZ2U9RkFMU0UsIHdhcm5pbmc9RkFMU0V9CiMgRW5zdXJlIHRoZSBhY3RpdmUgaWRlbnRpdHkgY2xhc3MgaXMgc2V0IHRvIHRoZSBjbHVzdGVyaW5nIHJlc3VsdApJZGVudHMobmV1cm9uX3NldXJhdCkgPC0gInByZWRpY3RlZF9jZWxsX3R5cGUiICAjIFJlcGxhY2Ugd2l0aCB5b3VyIGNsdXN0ZXJpbmcgY29sdW1uIG5hbWUKCiMgU3Vic2V0IHRoZSBTZXVyYXQgb2JqZWN0IHRvIGluY2x1ZGUgb25seSAiR2x1NCIgY2VsbHMKZ2x1NF9zZXVyYXQgPC0gc3Vic2V0KG5ldXJvbl9zZXVyYXQsIGlkZW50cyA9ICJHbHU1IikKCmdsdTRfZGF0YV9sYXllcnMgPC0gZ3JlcCgiXmRhdGFcXC4iLCBMYXllcnMoZ2x1NF9zZXVyYXRbWyJSTkEiXV0pLCB2YWx1ZSA9IFRSVUUpCiMgRXh0cmFjdCBleHByZXNzaW9uIGRhdGEgZnJvbSBhbGwgbGF5ZXJzIGFuZCBjb21iaW5lCmV4cHJfbGlzdCA8LSBsYXBwbHkoZ2x1NF9kYXRhX2xheWVycywgZnVuY3Rpb24obGF5ZXIpIHsKICBtYXQgPC0gR2V0QXNzYXlEYXRhKGdsdTRfc2V1cmF0LCBhc3NheSA9ICJSTkEiLCBsYXllciA9IGxheWVyKQogIAogICMgQ2hlY2sgaWYgdGhlIG1hdHJpeCBpcyBub3QgTlVMTCBhbmQgaGFzIGRpbWVuc2lvbnMKICBpZiAoIWlzLm51bGwobWF0KSAmJiBsZW5ndGgoZGltKG1hdCkpID09IDIpIHsKICAgIHJldHVybihtYXQpCiAgfSBlbHNlIHsKICAgIHJldHVybihOVUxMKSAgIyBTa2lwIHRoaXMgbGF5ZXIgaWYgaXQncyBOVUxMIG9yIGhhcyBubyBkaW1lbnNpb25zCiAgfQp9KQoKIyBSZW1vdmUgTlVMTCBlbnRyaWVzIGZyb20gdGhlIGxpc3QKZXhwcl9saXN0IDwtIEZpbHRlcihOZWdhdGUoaXMubnVsbCksIGV4cHJfbGlzdCkKCiMgTWVyZ2UgYWxsIGV4dHJhY3RlZCBleHByZXNzaW9uIG1hdHJpY2VzIChjb2x1bW4td2lzZTogY2VsbHMgYXJlIGluIGNvbHVtbnMpCmV4cHJfbWF0cml4X2dsdTQgPC0gZG8uY2FsbChjYmluZCwgZXhwcl9saXN0KQoKY291bnQgPC0gdChleHByX21hdHJpeF9nbHU0KQpnZW5lcyA8LSBjKCJHZnJhbCIsIkFkY3lhcDEiLCJHbHAxciIsIkdwYzMiKQoKY291bnQubm9ybSA8LSBzY2xpbmtfbm9ybShjb3VudCwgc2NhbGUuZmFjdG9yID0gMWU2LCBmaWx0ZXIuZ2VuZXMgPSBGQUxTRSwgZ2VuZS5uYW1lcyA9IGdlbmVzKQpnYygpCgpuZXR3b3JrcyA8LSBzY2xpbmtfbmV0KGV4cHIgPSBjb3VudC5ub3JtLCBuY29yZXMgPSAxLCBsZGEgPSBzZXEoMC41LCAwLjEsIC0wLjA1KSkKbmV0d29ya3MkY29yWzE6NCwxOjRdCmBgYAoKIyBSdW4gc2NMaW5rIHBlciBjZWxsIHR5cGUKYGBge3IgbWVzc2FnZT1GQUxTRSwgd2FybmluZz1GQUxTRX0KCnByb2Nlc3NfbmV1cm9uX2NlbGxfdHlwZSA8LSBmdW5jdGlvbihuZXVyb25fc2V1cmF0LCBjZWxsX3R5cGUsIGdlbmVzKSB7CiAgIyBFbnN1cmUgdGhlIGFjdGl2ZSBpZGVudGl0eSBjbGFzcyBpcyBzZXQgdG8gdGhlIGNsdXN0ZXJpbmcgcmVzdWx0CiAgSWRlbnRzKG5ldXJvbl9zZXVyYXQpIDwtICJuZXVyb25fY2VsbF90eXBlIiAgIyBSZXBsYWNlIHdpdGggeW91ciBjbHVzdGVyaW5nIGNvbHVtbiBuYW1lCiAgCiAgIyBTdWJzZXQgdGhlIFNldXJhdCBvYmplY3QgdG8gaW5jbHVkZSB0aGUgc3BlY2lmaWVkIG5ldXJvbiBjZWxsIHR5cGUKICBuZXVyb25fc2V1cmF0X3N1YnNldCA8LSBzdWJzZXQobmV1cm9uX3NldXJhdCwgaWRlbnRzID0gY2VsbF90eXBlKQogIAogICMgRXh0cmFjdCBkYXRhIGxheWVycwogIGRhdGFfbGF5ZXJzIDwtIGdyZXAoIl5kYXRhXFwuIiwgTGF5ZXJzKG5ldXJvbl9zZXVyYXRfc3Vic2V0W1siUk5BIl1dKSwgdmFsdWUgPSBUUlVFKQogIAogICMgRXh0cmFjdCBleHByZXNzaW9uIGRhdGEgZnJvbSBhbGwgbGF5ZXJzIGFuZCBjb21iaW5lCiAgZXhwcl9saXN0IDwtIGxhcHBseShkYXRhX2xheWVycywgZnVuY3Rpb24obGF5ZXIpIHsKICAgIGxheWVyX2RhdGEgPC0gbmV1cm9uX3NldXJhdF9zdWJzZXRbWyJSTkEiXV1AbGF5ZXJzW1tsYXllcl1dCiAgICAKICAgICMgQ2hlY2sgaWYgbGF5ZXIgZGF0YSBpcyBvZiB0eXBlIFM0IGFuZCBub3QgTlVMTAogICAgaWYgKCFpcy5udWxsKGxheWVyX2RhdGEpKSB7CiAgICAgIGlmIChpbmhlcml0cyhsYXllcl9kYXRhLCAibWF0cml4IikgfHwgaW5oZXJpdHMobGF5ZXJfZGF0YSwgImRnQ01hdHJpeCIpKSB7CiAgICAgICAgbWF0IDwtIEdldEFzc2F5RGF0YShuZXVyb25fc2V1cmF0X3N1YnNldCwgYXNzYXkgPSAiUk5BIiwgbGF5ZXIgPSBsYXllcikKICAgICAgICAKICAgICAgICBjYXQoIlByb2Nlc3NpbmcgbGF5ZXI6IiwgbGF5ZXIsICJ3aXRoIGRpbWVuc2lvbnM6IiwgZGltKG1hdCksICJcbiIpCiAgICAgICAgCiAgICAgICAgIyBDaGVjayBpZiB0aGUgbWF0cml4IGhhcyB0d28gZGltZW5zaW9ucyAoZ2VuZXMgeCBjZWxscykKICAgICAgICBpZiAobGVuZ3RoKGRpbShtYXQpKSA9PSAyKSB7CiAgICAgICAgICByZXR1cm4obWF0KQogICAgICAgIH0gZWxzZSB7CiAgICAgICAgICB3YXJuaW5nKHBhc3RlKCJMYXllciIsIGxheWVyLCAiZG9lcyBub3QgaGF2ZSB0aGUgZXhwZWN0ZWQgdHdvIGRpbWVuc2lvbnMuIikpCiAgICAgICAgICByZXR1cm4oTlVMTCkgICMgU2tpcCB0aGlzIGxheWVyIGlmIGl0IGRvZXNuJ3QgbWVldCB0aGUgY3JpdGVyaWEKICAgICAgICB9CiAgICAgIH0gZWxzZSB7CiAgICAgICAgd2FybmluZyhwYXN0ZSgiTGF5ZXIiLCBsYXllciwgImlzIG5vdCBvZiB0eXBlIFM0IG9yIGlzIHVuZXhwZWN0ZWQuIFNraXBwaW5nLiIpKQogICAgICAgIHJldHVybihOVUxMKSAgIyBTa2lwIHRoaXMgbGF5ZXIgaWYgaXQncyBub3QgYW4gUzQgb2JqZWN0CiAgICAgIH0KICAgIH0gZWxzZSB7CiAgICAgIHdhcm5pbmcocGFzdGUoIkxheWVyIiwgbGF5ZXIsICJpcyBOVUxMLiBTa2lwcGluZy4iKSkKICAgICAgcmV0dXJuKE5VTEwpICAjIFNraXAgdGhpcyBsYXllciBpZiBpdCdzIE5VTEwKICAgIH0KICB9KQogIAogICMgUmVtb3ZlIE5VTEwgZW50cmllcyBmcm9tIHRoZSBsaXN0CiAgZXhwcl9saXN0IDwtIEZpbHRlcihOZWdhdGUoaXMubnVsbCksIGV4cHJfbGlzdCkKICAKICAjIENoZWNrIGlmIHRoZXJlIGFyZSBhbnkgdmFsaWQgZXhwcmVzc2lvbiBtYXRyaWNlcwogIGlmIChsZW5ndGgoZXhwcl9saXN0KSA9PSAwKSB7CiAgICBzdG9wKHBhc3RlKCJObyB2YWxpZCBleHByZXNzaW9uIG1hdHJpY2VzIGZvdW5kIGZvciBjZWxsIHR5cGU6IiwgY2VsbF90eXBlKSkKICB9CiAgCiAgIyBNZXJnZSBhbGwgZXh0cmFjdGVkIGV4cHJlc3Npb24gbWF0cmljZXMgKGNvbHVtbi13aXNlOiBjZWxscyBhcmUgaW4gY29sdW1ucykKICBleHByX21hdHJpeCA8LSBkby5jYWxsKGNiaW5kLCBleHByX2xpc3QpCiAgCiAgY291bnQgPC0gdChleHByX21hdHJpeCkKICAKICAjIE5vcm1hbGl6ZSBjb3VudHMKICBjb3VudC5ub3JtIDwtIHNjbGlua19ub3JtKGNvdW50LCBzY2FsZS5mYWN0b3IgPSAxZTYsIGZpbHRlci5nZW5lcyA9IEZBTFNFLCBnZW5lLm5hbWVzID0gZ2VuZXMpCiAgCiAgZ2MoKQogIAogICMgQ3JlYXRlIG5ldHdvcmtzCiAgbmV0d29ya3MgPC0gdHJ5Q2F0Y2goewogICAgc2NsaW5rX25ldChleHByID0gY291bnQubm9ybSwgbmNvcmVzID0gMSwgbGRhID0gc2VxKDAuNSwgMC4xLCAtMC4wNSkpCiAgfSwgZXJyb3IgPSBmdW5jdGlvbihlKSB7CiAgICB3YXJuaW5nKHBhc3RlKCJFcnJvciBpbiBjcmVhdGluZyBuZXR3b3JrcyBmb3IgY2VsbCB0eXBlOiIsIGNlbGxfdHlwZSwgIlxuIiwgZSRtZXNzYWdlKSkKICAgIHJldHVybihOVUxMKQogIH0pCiAgCiAgaWYgKCFpcy5udWxsKG5ldHdvcmtzKSkgewogICAgcmV0dXJuKG5ldHdvcmtzJGNvclsxOjQsIDE6NF0pCiAgfSBlbHNlIHsKICAgIHJldHVybihOVUxMKSAgIyBSZXR1cm4gTlVMTCBpZiBuZXR3b3JrIGNyZWF0aW9uIGZhaWxlZAogIH0KfQoKIyBMb29wIG92ZXIgYWxsIG5ldXJvbiBjZWxsIHR5cGVzCnJlc3VsdHMgPC0gbGFwcGx5KG5ldXJvbl9jZWxsX3R5cGVzLCBmdW5jdGlvbihjZWxsX3R5cGUpIHsKICBjYXQoIlByb2Nlc3NpbmcgY2VsbCB0eXBlOiIsIGNlbGxfdHlwZSwgIlxuIikKICBwcm9jZXNzX25ldXJvbl9jZWxsX3R5cGUobmV1cm9uX3NldXJhdCwgY2VsbF90eXBlLCBnZW5lcykKfSkKCiMgT3B0aW9uYWxseSwgbmFtZSB0aGUgcmVzdWx0cyBmb3IgZWFzeSBpZGVudGlmaWNhdGlvbgpuYW1lcyhyZXN1bHRzKSA8LSBuZXVyb25fY2VsbF90eXBlcwoKCiMgSW5pdGlhbGl6ZSBhIGRhdGEgZnJhbWUgdG8gaG9sZCBjby1leHByZXNzaW9uIHZhbHVlcwpjb19leHByZXNzaW9uX3ZhbHVlcyA8LSBkYXRhLmZyYW1lKENlbGxUeXBlID0gY2hhcmFjdGVyKCksIENvRXhwcmVzc2lvbiA9IG51bWVyaWMoKSwgc3RyaW5nc0FzRmFjdG9ycyA9IEZBTFNFKQoKIyBMb29wIHRocm91Z2ggZWFjaCBlbnRyeSBpbiByZXN1bHRzCmZvciAoY2VsbF90eXBlIGluIG5hbWVzKHJlc3VsdHMpKSB7CiAgIyBFeHRyYWN0IHRoZSBjb3JyZWxhdGlvbiBtYXRyaXggZm9yIHRoZSBjdXJyZW50IGNlbGwgdHlwZQogIGNvcl9tYXRyaXggPC0gcmVzdWx0c1tbY2VsbF90eXBlXV0KICAKICAjIENoZWNrIGlmIHRoZSBtYXRyaXggY29udGFpbnMgYm90aCBnZW5lcwogIGlmICgiR2ZyYWwiICVpbiUgcm93bmFtZXMoY29yX21hdHJpeCkgJiYgIkFkY3lhcDEiICVpbiUgY29sbmFtZXMoY29yX21hdHJpeCkpIHsKICAgICMgRXh0cmFjdCB0aGUgY28tZXhwcmVzc2lvbiB2YWx1ZSBmb3IgR2ZyYWwgYW5kIEFkY3lhcDEKICAgIGNvX2V4cHJlc3Npb25fdmFsdWUgPC0gY29yX21hdHJpeFsiR2ZyYWwiLCAiQWRjeWFwMSJdCiAgICAKICAgICMgQXBwZW5kIHRoZSByZXN1bHQgdG8gdGhlIGRhdGEgZnJhbWUKICAgIGNvX2V4cHJlc3Npb25fdmFsdWVzIDwtIHJiaW5kKGNvX2V4cHJlc3Npb25fdmFsdWVzLCBkYXRhLmZyYW1lKENlbGxUeXBlID0gY2VsbF90eXBlLCBDb0V4cHJlc3Npb24gPSBjb19leHByZXNzaW9uX3ZhbHVlKSkKICB9Cn0KCmBgYAojIFBsb3QgY28tZXhwcmVzc2lvbiB2YWx1ZXMgZm9yIEdmcmFsL0FkY3lhcDEgcGVyIGNlbGwgdHlwZSAKYGBge3IgbWVzc2FnZT1GQUxTRSwgd2FybmluZz1GQUxTRX0KIyBFeHRyYWN0IEFkY3lhcDEgY29ycmVsYXRpb24gdmFsdWVzIGZyb20gdGhlIEdmcmFsIHJvdwpnZnJhbF9hZGN5YXAxX3ZhbHVlcyA8LSBzYXBwbHkocmVzdWx0cywgZnVuY3Rpb24oeCkgewogIHZhbCA8LSB4WyJHZnJhbCIsICJBZGN5YXAxIl0KICBpZiAoaXMubnVsbCh2YWwpKSBOQSBlbHNlIGFzLm51bWVyaWModmFsKSAgIyBDb252ZXJ0IE5VTExzIHRvIE5BIGFuZCBlbnN1cmUgbnVtZXJpYwp9KQoKIyBDb252ZXJ0IHRvIGEgMS1yb3cgbnVtZXJpYyBtYXRyaXgKZ2ZyYWxfYWRjeWFwMV9tYXRyaXggPC0gbWF0cml4KGdmcmFsX2FkY3lhcDFfdmFsdWVzLCBucm93ID0gMSkKcm93bmFtZXMoZ2ZyYWxfYWRjeWFwMV9tYXRyaXgpIDwtICJHZnJhbC1BZGN5YXAxIgpjb2xuYW1lcyhnZnJhbF9hZGN5YXAxX21hdHJpeCkgPC0gbmFtZXMocmVzdWx0cykKCiMgUmVwbGFjZSBOQSB2YWx1ZXMgd2l0aCAwIG9yIHVzZSBuYS5jb2xvciBhcmd1bWVudCBpbiBwaGVhdG1hcApnZnJhbF9hZGN5YXAxX21hdHJpeFtpcy5uYShnZnJhbF9hZGN5YXAxX21hdHJpeCldIDwtIDAgIAoKIyBDcmVhdGUgaGVhdG1hcApwIDwtIHBoZWF0bWFwKAogIGdmcmFsX2FkY3lhcDFfbWF0cml4LAogIGNsdXN0ZXJfcm93cyA9IEZBTFNFLCAgIyBObyBuZWVkIHRvIGNsdXN0ZXIgb25lIHJvdwogIGNsdXN0ZXJfY29scyA9IFRSVUUsICAgIyBDbHVzdGVyIGNlbGwgdHlwZXMKICBjb2xvciA9IGNvbG9yUmFtcFBhbGV0dGUoYygiYmx1ZSIsICJ3aGl0ZSIsICJyZWQiKSkoMTAwKSwKICBtYWluID0gIkdmcmFsLUFkY3lhcDEgQ28tZXhwcmVzc2lvbiBBY3Jvc3MgQ2VsbCBUeXBlcyIsCiAgbmFfY29sID0gImdyYXkiICAjIE9wdGlvbmFsbHkgbWFyayBOQSB2YWx1ZXMgaW4gZ3JheSBpbnN0ZWFkIG9mIHJlcGxhY2luZyB3aXRoIDAKKQpwcmludChwKQpnZ3NhdmUoaGVyZSgiaW1nL2hlYXRtYXBfY2x1c3Rlcl9jb2V4cC5wbmciKSwgcCkKYGBgCiMgUHJpbnQgY28tZXhwcmVzc2lvbiB2YWx1ZXMgZm9yIG9ubHkgR2x1NCBjbHVzdGVyCmBgYHtyIG1lc3NhZ2U9RkFMU0UsIHdhcm5pbmc9RkFMU0V9CnBfZ2x1NCA8LSBwaGVhdG1hcChyZXN1bHRzW1siR2x1NCJdXSkKcHJpbnQocCkKZ2dzYXZlKGhlcmUoImltZy9oZWF0bWFwX2dsdTRfY2x1c3Rlci5wbmciKSxwX2dsdTQpCmBgYAoKIyBTZXNzaW9uIEluZm8KPGRldGFpbHM+PHN1bW1hcnk+U2Vzc2lvbiBJbmZvPC9zdW1tYXJ5PgpgYGB7ciBzZXNzaW9uIGluZm99CnNlc3Npb25JbmZvKCkKYGBgCjwvZGV0YWlscz4KCg==